Zkusili jste to? A ono to nechodí?

Otázka (comp.lang.rexx, 28.5.2000) Užitím prostředků, popsaných na stránkách Vladimíra Zábrodského, jsem napsal program v jazyce Rexx a zkusil jsem jej spustit v prostředí OS/400, abych využil EXECSQL, ale bez úspěchu!

Prosím prohlédněte si dole uvedený program a opis chybových zpráv z obrazovky. Vítaná je každá pomoc. Jen bych poznamenal, že systém nemá žádné problémy s prvním povelem EXECSQL 'SET ...

 

program
...
address EXECSQL
EXECSQL 'SET OPTION COMMIT = *NONE'
SQL = 'SELECT ID, NAME FROM SHUS1/INPRCPF'
EXECSQL 'PREPARE S1 FROM :SQL'
EXECSQL 'DECLARE C1 CURSOR FOR S1'
EXECSQL 'OPEN C1'
EXECSQL 'FETCH C1 INTO :HVID, :HVNAME'
do while SQLCODE = 0
  say 'ID:' Hvid' - Name:' Hvname
  EXECSQL 'FETCH C1 INTO :HVID, :HVNAME'
end
EXECSQL 'CLOSE C1'



posloupnost chybových zpráv
EXECSQL
    12 *-* EXECSQL 'PREPARE S1 FROM :SQL';
        +++ RC(-10)
    14 *-* EXECSQL 'OPEN C1';
        +++ RC(-10)
    15 *-* EXECSQL 'FETCH C1 INTO :HVID, :HVNAME';
        +++ RC(-10)
    20 *-* EXECSQL 'CLOSE C1';
        +++ RC(-10)
Press ENTER to end terminal session.

Odpověď     Možná to je překvapení, ale program je správný. Ovšem za předpokladu, že v systému existuje knihovna SHUS1, v ní tabulka INPRCPF a v tabulce sloupce ID a NAME, prohlédněte si pozorně povel

SQL = 'SELECT ID, NAME FROM SHUS1/INPRCPF'

A naopak, když buď knihovna nebo tabulka nebo sloupec neexistuje, pak dostaneme právě takovou posloupnost chybových zpráv, jakou uvádí tazatel.

Děkuji Simonu Husinovi za inspiraci

 Jak napsat a spustit program

 Standardní vstup a výstup

 Externí datová fronta

 SQL povely


hlavní stránka english
změněno 26. dubna 2002
Copyright © 1998-2002 Vladimír Zábrodský