ISeries - Вызов хранимой процедуры SQL из программы CL

Как я могу запустить хранимую процедуру из программы CL? RUNSQLSTM требует члена-источника, но я просто хочу создать команду, чтобы пользователи могли легко передавать переменные, поэтому это не сработает.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
3
0
16 689
4

Ответы 4

Возможны 2 варианта:

В программе CL создайте временный исходный член. Создайте инструкцию SQL с предоставленными параметрами для выполнения хранимой процедуры и запишите этот исходный код во временный член. Затем добавьте вызов RUNSQLSTM со сгенерированным членом в качестве параметра.

Второй вариант - не создавать программу на CL, а использовать RPG / COBOL. Используя встроенный SQL, хранимая процедура может выполняться с параметрами. Их значения должны передаваться из команды в программу.

Думаю, мне лучше всего подойдет ваша вторая идея - спасибо. Было бы неплохо иметь возможность вызывать процедуру напрямую!

main_menu 29.10.2008 19:29

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

  1. эта статья использует REXX
  2. эта статья использует RPG

Оба они включают источник, необходимый для работы команды.

Вы можете вызвать системную программу QZDFMDB2 и передать ей один параметр со строкой SQL для выполнения. В этом случае строка SQL - это вызов вашей хранимой процедуры:

  CALL PGM(QZDFMDB2) PARM('CALL PROCEDURE (''XYZ'', ''ABC'')')

Чтобы заменить ваши значения, используйте переменную для PARM:

  DCL VAR(&CALL) TYPE(*CHAR) LEN(200) 

  CHGVAR VAR(&CALL) 
  VALUE('CALL PROCEDURE (''' *CAT &PARM1 *TCAT ''', ''' *CAT &PARM2 *TCAT ''')')

  CALL PGM(QZDFMDB2) PARM(&CALL)

Чтобы указать расположение или библиотеку процедуры, вот образец: CALL PGM(QZDFMDB2) PARM('CALL LIBRARY.PROCEDURE (''XYZ'', ''ABC'')')

Chel P. 17.10.2017 05:54

QCMDEXC может быть той командой, которую вы ищете.

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