Как получить возвращаемое значение хранимой процедуры при использовании SqlDataReader? - PullRequest
7 голосов
/ 11 ноября 2011

Разве невозможно получить возвращаемое значение сохраненной процедуры при использовании устройства чтения данных? Возвращаемое значение всегда равно null, но SP возвращает действительный int из 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
}

1 Ответ

12 голосов
/ 11 ноября 2011

Agh. Я обнаружил, что читатель должен быть закрыт, чтобы получить возвращаемое значение! Итак, внутри блока if {} выше я добавил:

myReader.Close(); // Need to close data reader before getting return value.
int returnValue = (int)myCommand.Parameters["@returnValue"].Value;

... и теперь все работает ОК!

...