如何从SQL Server存储过程接收作为C#返回值的整数?
有没有一种方法可以从SQL Server存储过程获取一个整数返回码值并返回到C#程序中,而不必在存储过程中定义一个额外的参数作为输出(或输入/输出)参数 我的应用程序必须调用一个存储过程,该存储过程将在别处编写,并且据称会返回一个整数值作为返回码。下面是一个简单的存根存储过程,我把它放在一起进行测试,还有一个C#代码版本——有很多不同的尝试如何从SQL Server存储过程接收作为C#返回值的整数?,c#,sql-server,stored-procedures,C#,Sql Server,Stored Procedures,有没有一种方法可以从SQL Server存储过程获取一个整数返回码值并返回到C#程序中,而不必在存储过程中定义一个额外的参数作为输出(或输入/输出)参数 我的应用程序必须调用一个存储过程,该存储过程将在别处编写,并且据称会返回一个整数值作为返回码。下面是一个简单的存根存储过程,我把它放在一起进行测试,还有一个C#代码版本——有很多不同的尝试 ALTER PROCEDURE [dbo].[MyTestSP] @OrderNumber INT , @LineNumber INT
ALTER PROCEDURE [dbo].[MyTestSP]
@OrderNumber INT
, @LineNumber INT
, @ActionCode INT -- code that decides course of action to take
, @DummyParm INT
AS
BEGIN
BEGIN TRY
DECLARE
@sql NVARCHAR(max)
, @ReturnCode INT = 57
, @ActionTaken BIT = 0
BEGIN
SET @ReturnCode = @OrderNumber + 100;
SET @ActionTaken = 1;
END
END TRY
BEGIN CATCH
SET @ReturnCode = 901;
END CATCH
RETURN @ReturnCode;
END
C#代码:
上面的函数在存储过程调用中收到了一个空值。您想用返回值名称添加一个参数,并将
SqlParmenter.Direction
设置为ParameterDirection.ReturnValue
var parameter = new SqlParameter();
parameter.Name = "@ReturnCode";
parameter.Direction = ParameterDirection.ReturnValue;
cmd.Parameter.Add(parameter);
// execute sql..
var value = parameter.Value;
您没有为
@DummyParm
定义任何内容,而且在您的C代码中,您正在调用MyTestSP1
,而SQL代码显示MyTestSP
…并且您还需要调用cmd.Parameters.Add(参数)代码>让它工作!是的。这只是一个演示如何设置返回值参数的片段。
var parameter = new SqlParameter();
parameter.Name = "@ReturnCode";
parameter.Direction = ParameterDirection.ReturnValue;
cmd.Parameter.Add(parameter);
// execute sql..
var value = parameter.Value;