如何从存储过程中获取返回值?
我注意到存储过程自己返回一个整数。我需要在 C# 中获取它。
您可以在 C# 中使用 Return 参数来获取该值。如下所示
SqlParameter retval = sqlcomm.Parameters.Add("@return_value", SqlDbType.VarChar);
retval.Direction = ParameterDirection.ReturnValue;
sqlcomm.ExecuteNonQuery();
string retunvalue = (string)sqlcomm.Parameters["@return_value"].Value;
请注意,您的过程必须返回一个值才能获取它:
create procedure [dbo].[usp_GetNewSeqVal]
@SeqName nvarchar(255)
as begin
declare @NewSeqVal int
select @NewSeqVal =1
---other statement
return @NewSeqVal
end
检查以下代码:
SqlParameter retval = sqlcomm.Parameters.Add("@b", SqlDbType.VarChar);
retval.Direction = ParameterDirection.ReturnValue;
sqlcomm.ExecuteNonQuery(); // MISSING
string retunvalue = (string)sqlcomm.Parameters["@b"].Value;
如需进一步参考检查链接:Getting return value from stored procedure in C#
在您的 SP 中,您需要返回KategoriId
. 默认情况下,SP 返回受最新插入、更新或删除语句影响的行数。
并确保您在 C# 和数据库列中使用正确的数据类型KategoriId
来完成这项工作。过去当数据库列是时我遇到了问题,Decimal
我试图将返回值分配给 anint
并且它从来没有工作过。
您可以output
在存储过程中使用参数或使用ExecuteScalar
代替ExecuteNonQuery
.