Как вызвать хранимую процедуру в IBM System i Access для Windows GUI Tool - PullRequest
13 голосов
/ 22 января 2010

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

У меня установлен IBM System i Access для Windows, и я могу выполнять команды SQL для базы данных DB2.

У меня такой вопрос: каков синтаксис для выполнения хранимой процедуры, которая принимает параметр, возвращает результат в качестве выходного параметра и выводит значение на экран?

Просто чтобы уточнить: я не спрашиваю, как вызвать proc в коде. Я хочу выполнить процедуру и увидеть результаты в инструменте графического интерфейса (который похож на SQL Enterprise Manager).

Ответы [ 3 ]

23 голосов
/ 22 января 2010

используйте ключевое слово call и передайте параметры.

call myStoredProc(parm1, parm2, ?);

Подробнее см. Здесь http://www.ibm.com/developerworks/data/library/techarticle/dm-0503melnyk/. Интересная часть Рисунок 5. Использование редактора команд для вызова процедуры SQL

7 голосов
/ 22 января 2010

То, что вы хотите, возможно. Я делал это сам много раз. К сожалению, я сейчас не в офисе, поэтому, должно быть, это из головы.

  1. Запустить систему i Access
  2. Перейдите к значкам iSeries и войдите в тот, где хранится ваша хранимая процедура
  3. Перейти к значкам баз данных и подключиться к нужному (у вас есть один локальный и, вероятно, один или несколько пультов)
  4. Только тогда вы увидите опцию «запустить скрипт SQL» внизу экрана
  5. Запустите эту опцию, и вы увидите редактор SQL (редактор вверху, просмотрщик / сообщения внизу)
  6. Помните, что вы уже подключены к правильному iSeries, но ваш запрос JDBC получит * LIBL профиля пользователя вашего соединения. Поэтому вы должны знать схему (библиотека iseries) вашей хранимой процедуры
  7. Введите "call YOURSCHEMA.YOURSTOREDPROCEDURE (?,?);" и используйте меню или ярлык для запуска этого оператора. Обратите внимание, что - в зависимости от настроек JDBC (см. Меню) - правильный синтаксис может быть «/» вместо «.». Также обратите внимание, что вы можете заменить первый знак вопроса на значение.

На дополнительной ноте

  • В iAccess под каждой схемой вы увидите значки для таблиц, представлений и т. Д. Также имеется значок для хранимых процедур. Вы увидите свой SP там. Используйте параметры, чтобы увидеть определение и так далее. Эта информация включает в себя подробную информацию о параметрах
  • Если вы хотите проверить это в iSeries, используйте системный каталог (это можно сделать и из редактора SQL) с помощью команды «select * from qsys2.sysprocedures где сейчас) = 'YOURSTOREDPROCEDURE'; "

ОЧЕНЬ ВАЖНО: мне никогда не удавалось протестировать SP с помощью редактора SQL (STRSQL) на самом iSeries. Только редактор iAccess SQL работал правильно.

0 голосов
/ 29 ноября 2018

Вы должны иметь возможность запустить свой SP следующим образом:

DECLARE  
 usr_in  YOUR_TABLE.YOUR_COLM%TYPE; --Gets the correct type by looking at column type
 app_in  YOUR_TABLE.YOUR_OTHER_COLM%TYPE;

BEGIN
 usr_in:='some value';
 app_in:='another_value';

 YOUR_SP_NAME(usr_in, app_in);  
END;  

Или вы можете использовать EXECUTE, но он не может быть динамически подготовлен (не запущен в Java), и я думаю, что есть и другие недостатки.

EXECUTE myStoredProc(parm1, parm2, ?);
...