1

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

在此处输入图像描述

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

4

4 回答 4

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
于 2012-08-01T06:29:14.353 回答
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#

于 2012-08-01T06:31:31.463 回答
0

在您的 SP 中,您需要返回KategoriId. 默认情况下,SP 返回受最新插入、更新或删除语句影响的行数。

并确保您在 C# 和数据库列中使用正确的数据类型KategoriId来完成这项工作。过去当数据库列是时我遇到了问题,Decimal我试图将返回值分配给 anint并且它从来没有工作过。

于 2012-08-01T06:31:23.823 回答
-1

您可以output在存储过程中使用参数或使用ExecuteScalar代替ExecuteNonQuery.

于 2012-08-01T06:33:10.293 回答