如何从存储过程中获取返回值?
我注意到存储过程自己返回一个整数。我需要在C#中获取它。
答案 0 :(得分:2)
您可以在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
答案 1 :(得分:1)
检查以下代码:
SqlParameter retval = sqlcomm.Parameters.Add("@b", SqlDbType.VarChar);
retval.Direction = ParameterDirection.ReturnValue;
sqlcomm.ExecuteNonQuery(); // MISSING
string retunvalue = (string)sqlcomm.Parameters["@b"].Value;
答案 2 :(得分:0)
在您的SP中,您需要返回KategoriId
。默认情况下,SP返回受最新insert,update或delete语句影响的行数。
并确保在C#和数据库列KategoriId
中使用正确的数据类型来实现此功能。我在过去遇到问题时数据库列为Decimal
并且我尝试将返回值分配给int
并且它从未起作用。
答案 3 :(得分:-1)
您可以在商店流程中使用output
参数,或使用ExecuteScalar
代替ExecuteNonQuery
。