You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何单次调用SQL Server存储过程同时获取结果集与返回值?

一次调用SQL Server存储过程同时获取数据集和返回值

完全可以实现,按以下步骤操作即可:

  • 保留你原有的连接与命令参数配置,使用ExecuteReader()执行命令并读取结果集
  • 读取完结果集后,必须关闭DataReader(推荐用using语句自动释放资源),之后就能正常获取返回值参数的值

完整代码示例

SqlConnection conn = new SqlConnection(ConnectionString);
SqlCommand cmd = new SqlCommand("CustomersList02", conn);
cmd.CommandType = CommandType.StoredProcedure;

// 设置输入参数和返回值参数
cmd.Parameters.Add(new SqlParameter("@Email", email));
var returnParam = cmd.Parameters.Add(new SqlParameter("@ReturnVal", SqlDbType.Int));
returnParam.Direction = ParameterDirection.ReturnValue;

conn.Open();

var dt = new DataTable();
// 读取结果集,using语句会自动关闭DataReader
using(var reader = cmd.ExecuteReader())
{
    dt.Load(reader);
}
// 此时可获取返回值
int returnValue = (int)returnParam.Value;

关键原理

存储过程的返回值会在所有结果集被读取完毕、DataReader关闭后,才会被填充到对应的参数中。如果直接用ExecuteNonQuery(),只会执行命令但不处理结果集,因此拿不到数据集;而用ExecuteReader()时,必须先处理完所有结果集并关闭阅读器,才能正确读取返回值。

内容的提问来源于stack exchange,提问作者MarcosGalvani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:10:24