Как вызвать хранимую процедуру в IBM System i Access for Windows GUI Tool

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

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

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

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


person Ken Burkhardt    schedule 22.01.2010    source источник


Ответы (3)


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

call myStoredProc(parm1, parm2, ?);

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

person Peter Schuetze    schedule 22.01.2010
comment
? — выходной параметр - person Joe; 02.02.2017
comment
Понижение, потому что нет объяснений, а ссылка не говорит о SP. Как мне получить возвращаемые значения? - person Philip Rego; 30.11.2018
comment
@PhilipRego Вы смотрели на рисунок 5 и абзац прямо перед ним? В нем конкретно рассказывается, как вызывать хранимую процедуру из инструмента с графическим интерфейсом. - person Peter Schuetze; 18.01.2019
comment
Сомневаюсь, что большинство людей могут даже получить доступ к этому инструменту пользовательского интерфейса. Вы не можете называть их так без пользовательского интерфейса. Вам нужно объявить свои переменные. - person Philip Rego; 19.01.2019
comment
@PhilipRego, если у вас есть полностью лицензированный IBM System i (иногда называемый iSeries или AS400), скорее всего, вы также можете установить IBM System i Access для Windows, установленный в вашей системе. Если вам не нравится этот инструмент, вы всегда можете загрузить IBM Data Studio (бесплатный инструмент) с веб-страницы IBM. Этот инструмент может подключаться к iSeries. - person Peter Schuetze; 24.01.2019
comment
На моем ПК установлена ​​полная версия IBM i Access для Windows 7.1, но она не включает этот графический интерфейс. :( Обычно я использую System i Navigator для выполнения SQL-запросов, но ему не нравится синтаксис call myStoredProc(parm1, parm2, ?);. - person topshot; 26.04.2019
comment
@Джо, спасибо! - person The Godfather; 30.06.2021

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

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

В качестве дополнительного примечания,

  • В iAccess под каждой схемой вы увидите значки для таблиц, представлений и так далее. Также доступна иконка для хранимых процедур. Там вы увидите свой SP. Используйте параметры, чтобы увидеть определение и так далее. Эта информация включает в себя подробную информацию о параметрах
  • Если вы хотите проверить это на своем iSeries, используйте системный каталог (это также можно сделать из редактора SQL) с помощью «выберите * из qsys2.sysprocedures, где имя_процедуры (извините, я не уверен в названии этого столбца прямо сейчас) = 'ВАША СОХРАНЕННАЯ ПРОЦЕДУРА';"

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

person robertnl    schedule 22.01.2010
comment
Спасибо - я новичок в DB2 и пытаюсь понять это уже три недели. Я не думал использовать ? (пытался использовать переменную объявления, как в SQL Server). - person Gerry Coll; 22.05.2012

Вы должны иметь возможность запускать свой 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, ?);
person Philip Rego    schedule 29.11.2018