Чтение DB2 таблиц из REXX

Сегодня я хочу рассказать Вам о том, как можно организовать работу с DB2, используя язык REXX. Для выполнения SQL команд нужно использовать функцию DSNREXX. Пример использования: /**********************************************************************/ /* Connect to DB2 system */ /**********************************************************************/ ConnectDB2: ADDRESS DSNREXX "CONNECT" db2sys Return Команда DSNREXX должна быть доступна для работы - это можно обеспечить так: "SUBCOM DSNREXX" IF RC THEN S_RC = RXSUBCOM('ADD','DSNREXX','DSNREXX') Общая логика REXX программы, обращающейся к DB2, следующая: 1. Подключаемся к DB2 подсистеме 2. Выполняем DB2 команды 3. Отключаемся от DB2 подсистеме Банально, не правда ли? =) Итак, сам текст REXX программы, которой в качестве аргумента передается имя DB2 подсистемы: /* REXX */ trace 'o' Parse Upper Arg db2sys Call ConnectDB2 Call Exec_Statement Call DisconnectDB2 /**********************************************************************/ /* Connect to DB2 system */ /**********************************************************************/ ConnectDB2: "SUBCOM DSNREXX" /* Host cmd env available? */ IF RC THEN /* No--make one */ S_RC = RXSUBCOM('ADD','DSNREXX','DSNREXX') ADDRESS DSNREXX "CONNECT" db2sys Return /**********************************************************************/ /* Execute DB2 SQL statement */ /**********************************************************************/ Exec_Statement: ExecStm = "SELECT * FROM MYOWNER.MYTABLE" ADDRESS DSNREXX "EXECSQL" , ExecStm Return /**********************************************************************/ /* Disconnect from DB2 system */ /**********************************************************************/ DisconnectDB2: ADDRESS DSNREXX "DISCONNECT" /* Delete the host command */ /* environment for */ S_RC = RXSUBCOM('DELETE','DSNREXX','DSNREXX') Return Обратите вниманию, что в программе отсутствует проверка SQL кода (находится в переменной SQLCODE) - для упрощения.Air Zoom Vomero 11

Для того, чтобы распечатать

Для того, чтобы распечатать значения из таблицы, их нужно прочитать в переменные. Так что поменять надо сам запрос:
ExecStm = "SELECT FIELD INTO :VARIABLE FROM MYOWNER.MYTABLE"

После выполнения запроса значение поля field будет находится в переменной variable. Так что после этого можно и печатать:

Say VARIABLE

если писать exec в 3.4 то мне

если писать exec в 3.4 то мне просто в ответ пишется variable,
а если делать через jcl, то 12 ошибка
//user1967 job acct#,user19,notify=user19,msglevel=(1,1)
//step01 exec pgm=ikjeft01,parm='dbread1 dbbg'
//sysexec dd dsn=user19.exec,disp=shr
//systsprt dd sysout=*
//systsin dd dummy
вот мой jcl

Проблема решена! Путем

Проблема решена!
Путем припиливания курсора

подскажите, не совсем ясно,

подскажите, не совсем ясно, как вывести значения на экран?
я так понял, что чтото нужно добавить после ADDRESS DSNREXX "EXECSQL",...

Отправить комментарий

  • Доступны HTML теги: <b> <i> <u> <br> <hr> <div> <span> <code> <pre>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <pli>.

Подробнее о форматировании

  _____   _____ 
|___ | |___ |
/ / / /
/ / / /
/_/ /_/
Enter the code depicted in ASCII art style.