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 ожидает, что вы вызовете процедуру таким образом, чтобы она могла возвращать значения в ваши переменные.

Другие вопросы по тегам