Я вызываю хранимую процедуру 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()
но ситуация такая же.
Я проверил хранимую процедуру, все вроде нормально. Все выходные параметры установлены правильно.
У кого-нибудь была похожая проблема или какой-то намек, что вызывает такое поведение?