Oracle смешан выходной параметр доступа к данным - PullRequest
0 голосов
/ 17 апреля 2020

Я вызываю хранимую процедуру Oracle, которая содержит 15 входных параметров и 4 выходных параметра. Выходные параметры устанавливаются следующим образом:

OracleParameter p_errn = cmd.Parameters.Add("pErrCode", OracleDbType.Decimal, 10);
                p_errn.Direction = ParameterDirection.Output;

                OracleParameter p_errm = cmd.Parameters.Add("pErrMsg", OracleDbType.Varchar2, 1000);
                p_errm.Direction = ParameterDirection.Output;

                OracleParameter pStatus = cmd.Parameters.Add("pStatus", OracleDbType.Decimal, 10); 
                pStatus.Direction = ParameterDirection.Output;

                OracleParameter pID = cmd.Parameters.Add("pID", OracleDbType.Varchar2, 1000);
                pID.Direction = ParameterDirection.Output;

Процедура i успешно выполнена, но значения выходных параметров перепутаны. Значение, которое должно быть в pId, находится в pStatus, значение, которое должно быть в pStatus, находится в pErrMsg и т. Д.

Я также пытался получить значения, получая из коллекции параметров:

cmd.Parameters["pErrMsg"].Value.ToString()

но ситуация такая же.

Я проверил хранимую процедуру, все вроде нормально. Все выходные параметры установлены правильно.

У кого-нибудь была похожая проблема или какой-то намек, что вызывает такое поведение?

1 Ответ

0 голосов
/ 17 апреля 2020

Все параметры должны быть добавлены в том же порядке, как они определены в хранимой процедуре ORACLE.

Один из входных параметров был добавлен не по порядку, и это вызвало путаница.

...