这难道不是可能得到一个存储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!
上一篇:通过调用一个JavaScript服务器端功能服务器端、功能、JavaScript
下一篇:什么是使将使用Windows的Temp目录中的自解压压缩(SFX)的Windows程序安装程序中的最简单的方法?最简单、安装程序、程序、方法