Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从SQL Server存储过程接收作为C#返回值的整数?_C#_Sql Server_Stored Procedures - Fatal编程技术网

如何从SQL Server存储过程接收作为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

有没有一种方法可以从SQL Server存储过程获取一个整数返回码值并返回到C#程序中,而不必在存储过程中定义一个额外的参数作为输出(或输入/输出)参数

我的应用程序必须调用一个存储过程,该存储过程将在别处编写,并且据称会返回一个整数值作为返回码。下面是一个简单的存根存储过程,我把它放在一起进行测试,还有一个C#代码版本——有很多不同的尝试

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;