C# 如何从存储过程中获取返回值?
以下是我的SQL: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的返回值?您可以添加一个返回值
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()
}