Hallo *All,
ich habe folgende Aufgabe :
es müssen max. 50 Pgm Variablen mit dem Wert aus einer Datei gefüllt werden.
Dazu wollte ich etwas schlauer sein und habe ich mir folgende Lösung ausgedacht :
D XCol01 S 3 0
:
:
D XCol50 S 3 0
D FTZhl S 3 0 (Zähler 1 - 50)
In der Do Schleife mache ich pro Lesevorgang :
FTZhl += 1;
SQLStm = 'Set :' + 'XCol' + %editc(FTZhl:'X') + ' = ' + %editc(XLAENGE:'Z');
EXEC SQL
execute immediate :SQLStm ;
Beim Debuggen sehe ich :
> EVAL sqlstm SQLSTM =
....5...10...15...20...25...30...35...40...45...50 ...55...60
'Set :XCol01 = 1 '
aber nach "execute" bekome ich SQLCODE = -312, Variable nicht deklariert oder nicht verwendbar.
Funktioniert "set " über "execute immediate" auf diese Weise nicht ?
Kann man das irgendwie anders (ohne IF's !) lösen ?
Schöne Grüsse
A. Wojcik
ich habe folgende Aufgabe :
es müssen max. 50 Pgm Variablen mit dem Wert aus einer Datei gefüllt werden.
Dazu wollte ich etwas schlauer sein und habe ich mir folgende Lösung ausgedacht :
D XCol01 S 3 0
:
:
D XCol50 S 3 0
D FTZhl S 3 0 (Zähler 1 - 50)
In der Do Schleife mache ich pro Lesevorgang :
FTZhl += 1;
SQLStm = 'Set :' + 'XCol' + %editc(FTZhl:'X') + ' = ' + %editc(XLAENGE:'Z');
EXEC SQL
execute immediate :SQLStm ;
Beim Debuggen sehe ich :
> EVAL sqlstm SQLSTM =
....5...10...15...20...25...30...35...40...45...50 ...55...60
'Set :XCol01 = 1 '
aber nach "execute" bekome ich SQLCODE = -312, Variable nicht deklariert oder nicht verwendbar.
Funktioniert "set " über "execute immediate" auf diese Weise nicht ?
Kann man das irgendwie anders (ohne IF's !) lösen ?
Schöne Grüsse
A. Wojcik