Как вызвать хранимую процедуру в инструменте IBM System я Access для Windows GUI
Я хотел бы протестировать хранимую процедуру DB2, запущенную в системе AS400.
У меня установлен IBM System я Access для Windows и вы можете запускать команды SQL в базе данных DB2.
Мой вопрос: что такое синтаксис для выполнения хранимой процедуры, которая принимает параметр и возвращает результат в качестве выходного параметра и печатает значение на экране?
Просто пояснить: я не спрашиваю, как вызвать proc в коде. Я хочу выполнить proc и увидеть результаты в GUI-инструменте (который похож на SQL Enterprise Manager).
Ответы
Ответ 1
используйте ключевое слово call
и передайте параметры.
call myStoredProc(parm1, parm2, ?);
Подробнее см. здесь http://www.ibm.com/developerworks/data/library/techarticle/dm-0503melnyk/. Интересная часть Рисунок 5. Использование редактора команд для вызова процедуры SQL
Ответ 2
То, что вы хотите, возможно. Я делал это сам много раз. К несчастью, я сейчас не в офисе, так что это должно быть от верхушки головы.
- Запустить систему я Access
- Перейдите на иконки iSeries и войдите в систему, в которой хранится ваша хранимая процедура.
- Перейдите к значкам баз данных и подключитесь к правильному (у вас есть один локальный и, возможно, один или несколько пультов)
- Только после этого вы увидите опцию "запустить SQL script" в нижней части экрана.
- Запустите этот параметр, и вы увидите редактор SQL (редактор сверху, просмотрщик/сообщения внизу)
- Помните, что вы уже подключены к правильному iSeries, но ваш запрос JDBC получит * LIBL пользовательского профиля вашего соединения. Поэтому вы должны знать схему (библиотеку iseries) вашей хранимой процедуры.
- Введите "вызов YOURSCHEMA.YOURSTOREDPROCEDURE(?,?);" и используйте меню или ярлык для запуска этого оператора. Обратите внимание, что - в зависимости от настроек JDBC (см. Меню) - правильный синтаксис может быть "/" вместо ".". Также обратите внимание, что вы можете заменить первый знак вопроса на значение.
Кроме того,
- В iAccess под каждой схемой вы увидите значки для таблиц, представлений и т.д. Также доступен значок хранимых процедур. Там вы увидите свой SP. Используйте параметры, чтобы увидеть определение и так далее. Эта информация содержит подробную информацию о параметрах
- Если вы хотите проверить это на своем iSeries, используйте системный каталог (это также может быть сделано из редактора SQL) с помощью "select * from qsys2.sysprocedures where procedure_name (извините, не уверен, что имя этого столбца вправо now) = 'YOURSTOREDPROCEDURE';"
ОЧЕНЬ ВАЖНО: я никогда не мог протестировать SP с помощью редактора SQL (STRSQL) на самом iSeries. Только редактор iAccess SQL работал правильно.
Ответ 3
Вы должны быть в состоянии запустить свой 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, ?);