使用SqlDataReader对象时,我怎样才能得到存储过程的返回值? [英] How can I get return value of stored procedure when using SqlDataReader?
本文介绍了使用SqlDataReader对象时,我怎样才能得到存储过程的返回值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这难道不是可能得到一个存储procedeure的返回值使用DataReader时?返回值总是空,但SP从内部SSMS返回一个有效的int。
myCommand.CommandText =GetVenueVideos;
的SqlParameter retVal的=新的SqlParameter(@的returnValue,SqlDbType.Int);
retVal.Direction = ParameterDirection.ReturnValue;
myCommand.Parameters.Add(retVal的);
myReader = myCommand.ExecuteReader();
如果(myReader.Read()&安培;&安培; myReader.HasRows)
{
INT的returnValue = Convert.ToInt32(retVal.Value);
//的returnValue是在这一点空
}
解决方案
哎。我发现读者已经被关闭,以获得返回值!所以上面的,如果{}块里面,我说:
myReader.Close(); //需要得到返回值之前关闭数据读取器。
INT的returnValue =(int)的myCommand.Parameters [@的returnValue]值。
......,现在,它的工作原理确定!
Is it not possible to get the return value of a stored procedeure when using a datareader? The return value is always null, but the SP returns a valid int from within SSMS.
myCommand.CommandText = "GetVenueVideos";
SqlParameter retVal = new SqlParameter("@returnValue",SqlDbType.Int);
retVal.Direction = ParameterDirection.ReturnValue;
myCommand.Parameters.Add(retVal);
myReader = myCommand.ExecuteReader();
if (myReader.Read() && myReader.HasRows)
{
int returnValue = Convert.ToInt32(retVal.Value);
//returnValue is null at this point
}
解决方案
Agh. I've found out the reader has to be closed to get the return value! So inside the if {} block above, I added:
myReader.Close(); // Need to close data reader before getting return value.
int returnValue = (int)myCommand.Parameters["@returnValue"].Value;
...and now it works OK!
这篇关于使用SqlDataReader对象时,我怎样才能得到存储过程的返回值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文