В IBM i как запустить хранимую процедуру с помощью команды DB2 QShell?
Как бы вы запустили хранимую процедуру с помощью команды DB2 QShell, поскольку мне нужен простой способ модульного тестирования изменения хранимой процедуры?
На IBM я
Начал qshell с
QSH
Введены эти команды db2 в различных форматах без успеха
db2 call libraryname.stroredprocedurename('param1value' 'param2value' ?)
db2 call libraryname.stroredprocedurename ('param1value' 'param2value' ?)
db2 call libraryname.stroredprocedurename (param1value param2value ?)
Единственный источник ссылки, который я мог найти
Попытался использовать CLP для вызова хранимых процедур, но здесь нет примеров CLP.
4 ответа
Я использую Squirrel SQL Client http://squirrel-sql.sourceforge.net/ чтобы проверить все мои SQL.
call libraryname.stroredprocedurename('param1value', 'param2value')
Обратите внимание, что разделитель является запятой ,
, а также ?
не является допустимым маркером параметра при интерактивном вызове.
Помимо клиента вам потребуется драйвер JDBC. Вы можете использовать драйвер JTOpen для IBM, который я нашел здесь: http://jt400.sourceforge.net/
Вы также можете использовать клиент JDBC, включенный в jt400.jar. Вы можете запустить его из QSH, используя следующую команду.
java -cp /qibm/proddata/os400/jt400/lib/jt400.jar com.ibm.as400.access.jdbcClient.Main jdbc: db2: localhost
Клиент также будет обрабатывать выходные параметры хранимой процедуры, как показано в следующем примере.
процедура создания add1 (inparm int, out outparm int) язык sql begin set outparm = inparm +1; завершение вызова add1(1,?) Параметр 1 вернул 2
Из командной строки CL или внутри программы CL вы можете использовать RUNSQL
Команда для выполнения оператора SQL.
Если вы собираетесь использовать несколько специальных операторов SQL, вы можете использовать STRSQL
команда. Лично я склонен использовать окно SQL, предоставляемое как часть iNavigator.
Наконец получил основной синтаксис
db2 "CALL lib.proc ('parmvalue1')"
В результате чего:
DB20000I SQL-команда завершена успешно.