SQL0469 IN, OUT или INOUT недопустимы для параметра 2 в процедуре
Я пытаюсь запустить хранимую процедуру для IBM iSeries с AS400 и получаю вышеуказанную ошибку в своем заголовке.
Когда я набираю следующее для выполнения хранимой процедуры из инструмента System iNavigator, она работает нормально:
CALL QS36F.HH189P('1','1','')
Направление первого параметра в хранимой процедуре определяется как ввод, второй вывод и третье как вывод.
Проблема в том, когда я пытаюсь запустить хранимую процедуру из.Net кода, настраивая параметры. Может кто-нибудь, пожалуйста, помогите мне?
Мой список параметров настроен следующим образом:
DB2Command.Parameters.Add("P_STRRRN", iDB2DbType.iDB2Char, 10);
DB2Command.Parameters["P_STRRRN"].Direction = System.Data.ParameterDirection.Input;
DB2Command.Parameters["P_STRRRN"].Value = strRRN;
DB2Command.Parameters.Add("P_LSTRRN", iDB2DbType.iDB2Char, 10);
DB2Command.Parameters["P_LSTRRN"].Value = string.Empty;
DB2Command.Parameters["P_LSTRRN"].Direction = System.Data.ParameterDirection.Output;
DB2Command.Parameters.Add("P_ERRMSG", iDB2DbType.iDB2Char, 70);
DB2Command.Parameters["P_ERRMSG"].Value = string.Empty;
DB2Command.Parameters["P_ERRMSG"].Direction = System.Data.ParameterDirection.Output;
РАЗРЕШАЮЩАЯ СПОСОБНОСТЬ
Пришлось объявить командный текст следующим образом:
string cmdtextstring = "CALL QS36F.HH189P" + "('" + strRRN + "',?,?)";
Пришлось настроить параметры следующим образом:
DB2Command.Parameters.Add("P_LSTRRN", iDB2DbType.iDB2Char, 10);
DB2Command.Parameters["P_LSTRRN"].Value = string.Empty;
DB2Command.Parameters["P_LSTRRN"].Direction = System.Data.ParameterDirection.Output;
DB2Command.Parameters.Add("P_ERRMSG", iDB2DbType.iDB2Char, 70);
DB2Command.Parameters["P_ERRMSG"].Value = string.Empty;
1 ответ
Если вы передаете параметры в виде строковых констант, то где будет возвращено значение OUT или INOUT? DB2 ожидает, что вы вызовете процедуру таким образом, чтобы она могла возвращать значения в ваши переменные.