Устранение неполадок Oracle хранимой процедуры, когда она возвращает только -1 - PullRequest
0 голосов
/ 10 июля 2020

У меня есть хранимая процедура, которая работает, когда я тестирую ее вручную и непосредственно в базе данных. Процедура ничего не возвращает. И поскольку он отлично работает, когда я тестирую его вручную, я не показываю его здесь.

Но когда я вызываю его из кода, я получаю возвращаемое значение -1, которое я понимаю как «что-то пошло неправильно ".

command.CommandText = Properties.Settings.Default.OracleProcedureNewCable;
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.BindByName = true;

command.Parameters.Add(new OracleParameter { OracleDbType = OracleDbType.Varchar2, ParameterName = "p_tag_id", Value = (object)cable.TagId ?? DBNull.Value });

return command.ExecuteNonQuery();

System.Data.Common.DbCommand.ExecuteNonQuery вернул -1

Установка точки останова не дала мне много информации о том, почему это произошло неправильно. Как мне устранить неполадки в этом случае?

Заранее спасибо!

1 Ответ

1 голос
/ 10 июля 2020

когда я вызываю его из кода, я получаю возвращаемое значение -1, которое я понимаю как «что-то пошло не так».

Это неверно.

«Для операторов UPDATE, INSERT и DELETE возвращаемое значение - это количество строк, затронутых командой. Для всех других типов операторов возвращаемое значение равно -1».

DbCommand.ExecuteNonQuery

Когда что-то пойдет не так, это вызовет исключение.

И Oracle хранимые процедуры даже не имеют возвращаемого значения. У них могут быть выходные параметры, включая наборы результатов с параметрами вывода sysrefcursor, но они не имеют возвращаемого значения.

...