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

Sky*_*g33 4 c# sql-server asp.net 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;
Run Code Online (Sandbox Code Playgroud)

这是我的C#:

try
            {
                DbCommand command = db.GetStoredProcCommand("upd_Coupon_p");
                db.AddInParameter(command, "@pGuid", DbType.String, s);
                db.AddInParameter(command, "@pStatus", DbType.Byte, 1);
                ds = db.ExecuteDataSet(command);
             }
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*are 5

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

对于SqlCommand:

parameters.Add("@retValue", DbType.Int32, ParameterDirection.ReturnValue);   
Run Code Online (Sandbox Code Playgroud)

对于EL,您需要使用db.AddParameter()并指定ParameterDirection.ReturnValue.

此外,只要在您的数据库中启用了行计数,对于您正在执行的更新,您可以使用ExecuteNonQuery()中的结果来告诉您在更新/插入/删除/等上受影响的行数.这样你可以处理受影响的行是0(找不到任何)