C# 如何从存储过程中获取返回值?

C# 如何从存储过程中获取返回值?,c#,asp.net,sql-server,return-value,C#,Asp.net,Sql Server,Return Value,以下是我的SQL: IF (SELECT Status FROM dbo.Coupon WHERE Guid = @pGuid) = 0 BEGIN UPDATE dbo.Coupon SET Status = @pStatus WHERE Guid = @pGuid RETURN 0 END ELSE RETURN 1; 这是我的简历: 如何在代码中获取0或1的返回值?您可以添加一个返回值

以下是我的SQL:

IF (SELECT Status FROM dbo.Coupon WHERE Guid = @pGuid) = 0
BEGIN
    UPDATE
        dbo.Coupon

    SET
        Status = @pStatus   

    WHERE
        Guid = @pGuid

    RETURN 0    
END

ELSE

RETURN 1;
这是我的简历:


如何在代码中获取0或1的返回值?

您可以添加一个返回值参数,如下所示:

对于SqlCommand:

parameters.Add("@retValue", DbType.Int32, ParameterDirection.ReturnValue);   
对于EL,您需要使用db.AddParameter()并指定ParameterDirection.ReturnValue


此外,只要数据库中的“行计数”处于启用状态,对于正在执行的更新,您可以使用ExecuteOnQuery()的结果来告诉您有多少行在更新/插入/删除/等操作中受到影响。这样,如果受影响的行数为0(找不到任何行),您就可以处理。

什么是DbCommand.ExecuteDataSet()为什么不使用ExecuteScalar()?

将变量声明为输出,并将其放入数据访问部分的调用函数中

参见下面的代码

在存储过程中

  @ReturnStatus int output //inside your stored procedure argument section
在“数据访问”部分中,请使用以下命令:

   AddOutParameter(.....);

希望这有帮助。

我就是这么做的,所以基本上只使用ReturnValue,但其他部分可能会有用

            var retparam = new SqlParameter("@return", System.Data.SqlDbType.Int) { Direction = System.Data.ParameterDirection.ReturnValue };
            comm.Parameters.Add(retparam);
            comm.ExecuteNonQuery();
            int ret = 0;
            if (retparam == null)
            {
                System.Diagnostics.Debug.WriteLine("retparam was null");
            }
            else if (retparam.Value == null)
            {
            }
            else
            {
               // use reparam.Value.ToString()
            }

如何从存储过程中获取返回值?db是自定义数据库类的实例吗?哦,等等!你在用EL!这里的答案更充实了一点:如果您感兴趣的只是返回值,那么就不需要添加输出参数——正如其他答案中使用returnValue枚举详细介绍的那样,可以访问该返回值。诚然,你的建议没有错,只是有点不必要。
            var retparam = new SqlParameter("@return", System.Data.SqlDbType.Int) { Direction = System.Data.ParameterDirection.ReturnValue };
            comm.Parameters.Add(retparam);
            comm.ExecuteNonQuery();
            int ret = 0;
            if (retparam == null)
            {
                System.Diagnostics.Debug.WriteLine("retparam was null");
            }
            else if (retparam.Value == null)
            {
            }
            else
            {
               // use reparam.Value.ToString()
            }