从存储过程中获取返回值

时间:2012-08-01 06:27:18

标签: c# .net sql-server stored-procedures

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

enter image description here

我注意到存储过程自己返回一个整数。我需要在C#中获取它。

4 个答案:

答案 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;

进一步参考检查链接:Getting return value from stored procedure in C#

答案 2 :(得分:0)

在您的SP中,您需要返回KategoriId。默认情况下,SP返回受最新insert,update或delete语句影响的行数。

并确保在C#和数据库列KategoriId中使用正确的数据类型来实现此功能。我在过去遇到问题时数据库列为Decimal并且我尝试将返回值分配给int并且它从未起作用。

答案 3 :(得分:-1)

您可以在商店流程中使用output参数,或使用ExecuteScalar代替ExecuteNonQuery