C# захватывает возвращаемое значение из хранимого pro c при использовании ExecuteReader - PullRequest
1 голос
/ 13 февраля 2020

Я пытаюсь получить возвращаемое значение из сохраненного про c, оно должно возвращать 1, но код ниже C# всегда показывает 0 вместо.

Я знаю, что вы должны только читать значения выходных параметров и возвращаемое значение ПОСЛЕ того, как хранилище данных было закрыто, но я делаю это, и он все еще использует неправильное значение.

            using (SqlConnection con = new SqlConnection(connectionString))
            {
                con.Open();

                con.InfoMessage += (object obj, SqlInfoMessageEventArgs e) => {
                    spPrintOutput2.Add(e.Message);
                };

                SqlCommand cmd = new SqlCommand(sql, con);
                cmd.CommandTimeout = 60 * 60;   // 1 hour timeout
                cmd.Parameters.Add("@returnValue", System.Data.SqlDbType.Int).Direction
                    = System.Data.ParameterDirection.ReturnValue;

                using (SqlDataReader dataReader = cmd.ExecuteReader())
                {
                    do
                    {
                        while (dataReader.Read())
                            spPrintOutput2.Add(dataReader[0].ToString());
                    } while (dataReader.NextResult());
                }

                spReturnValue = (int)cmd.Parameters["@returnValue"].Value;  // *** Should be 1 but it is 0

                cmd.Dispose();
            }

1 Ответ

1 голос
/ 13 февраля 2020

Вы забыли указать CommandType.StoredProcedure. По умолчанию тип команды CommandType.Text, который не ожидает возврата.

Попробуйте добавить:

cmd.CommandType = CommandType.StoredProcedure;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...