8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

使用执行读取器从 SQL 获取返回值

Sebastian Juarez 1月前

28 0

因此,我在 SQL 服务器中有这个存储过程,其中包含这段 SQL...存储过程的一部分...IF @@ERROR = 0 --AND @@ROWCOUNT = 1BEGIN .. dO STUFF SELECT * FROM MyTable

所以我在 SQL 服务器中有一个包含这段 SQL 的存储过程

... part of store procedure...
IF @@ERROR = 0 --AND @@ROWCOUNT = 1
BEGIN
     .. dO STUFF 
     SELECT * FROM MyTable
    RETURN 0
END
ELSE
BEGIN
    RAISERROR('Something went wrong :-(', 16, 1)
    RETURN -1
END

END

在我获取数据的 C# 代码中我这样做

//Sql param used to get the return value from the store procedure
SqlParameter returnValueParam = command.Parameters.Add("@return_value", SqlDbType.Int);
returnValueParam.Direction = ParameterDirection.ReturnValue;
using (var reader = command.ExecuteReader(CommandBehavior.CloseConnection))
{
 while (reader.Read())
 {
  SpRetrunValue.EmailAddress = DBNulls.DBNullToString(reader["Email"], string.Empty);
... More stuff
  }
   reader.NextResult();
   SpRetrunValue.ExternalData = new List<ExternalData>();
   var ExtData = new ExternalData();
  while (reader.Read())
  {
   ExtData.Id = DBNulls.DBNullToInteger(reader["ID"], 0);
   SpRetrunValue.ExternalData.Add(intExtData);
   }
   //get the return code on the SP 0 for success -1 for error
   SpRetrunValue.ResultCode = (int)returnValueParam.Value;
   }

我遇到的问题是,如果我使用它, command.ExecuteNonQuery(); 那么我可以获得返回值。但是现在使用 as is 我无法获得返回值,但我确实获得了结果集。难道不能通过这种方式获得返回值吗?我 在 上 ,但这需要我向存储过程添加另一个参数,我觉得这违背了像上面的存储过程那样仅返回值的目的。

帖子版权声明 1、本帖标题:使用执行读取器从 SQL 获取返回值
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Sebastian Juarez在本站《sql-server》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这是一篇好文章。每个示例都不同,因此请查看详细信息。了解 reader.Close() 如何影响返回代码,使其在读取值之前实际存在,这很有用。

返回
作者最近主题: