调用存储过程时,在C#中获取返回值和一组记录

Wal*_*oud 4 c# ado.net stored-procedures sql-server-2008

我有一个存储过程,返回2个输出参数和一个记录.

但是在C#中:

  • ExecuteReader 不允许返回值但允许记录
  • ExecuteNonQuery 允许返回值但不记录.

我怎样才能得到这两个?

Ste*_*eve 5

在关闭DataReader之前,存储过程返回的输出参数不可用.

假设你有

 SqlDataReader reader = cmd.ExecuteReader();
  ...... do you record reading
 reader.Close();

 // Now the output parameters are available
 int result = (int)cmd.Parameters["OutputParameter1"].Value;         
Run Code Online (Sandbox Code Playgroud)

当然这假设您已正确设置输出参数....

这是来自MSDN上的SqlDataReader文档

在使用SqlDataReader时,关联的SqlConnection正忙于为SqlDataReader提供服务,除了关闭SqlConnection之外,不能对SqlConnection执行任何其他操作.在调用SqlDataReader的Close方法之前就是这种情况.例如,在调用Close之前,无法检索输出参数.