PDA

View Full Version : CREATE ALIAS mit Variable?



cbe
18-04-12, 13:13
Hallo SQL-Spezis!

kann man eigentlich in einem SQLRPGLE-Programm einen CREATE ALIAS mit einer Variable ausführen?


C/exec sql create alias mhkcn/:p$objn for :p$objl/:p$objn
C/end-execbringt leider "Token : ungültig. Gültige Token: <IDENTIFIER>."

Und ich muss hunderte von Dateien auf einer fernen AS400 als Alias anlegen. Das würde mir mit einem Programm leichter fallen.

Der einzige Gedanke, den ich habe ist, eine RPG-Quelle zu generieren, umzuwandeln und dann auszuführen.
Aber das geht doch sicher einfacher...

Hat jemand eine bessere Idee?
Christian

P.S. es muss auch nicht in RPG sein

BenderD
18-04-12, 13:30
dynamic sql heißt das Zauberwort:

create alias Befehl in Programmvariable sqlstring reinschreiben und dann:
exec sql execute immediate :sqlstring;

D*B

Pikachu
18-04-12, 13:33
Vielleicht mit einer QM-Query

CREATE ALIAS QWERTZ/&ALIAS FOR &LIB/&FILE

und einem CL, das

STRQMQRY QMQRY(Bibliothek/QM-Query) SETVAR((ALIAS &ALIAS) (LIB &LIB) (FILE &FILE))

mehrmals aufruft.

cbe
18-04-12, 13:59
Super, so etwas suchte ich!


C eval sqlstring = 'create alias mhkcn/'
C + %trim(p$objn) + ' for '
C + %trim(p$objl) + '/' + %trim(p$objn)
C/exec sql execute immediate :sqlstring
C/end-exec

funktioniert einwandfrei.

QMQRY geht bestimmt auch, aber das Zählen der Anführungszeichen ist immer so lästig...

Vielen Dank!
Christian

Pikachu
18-04-12, 14:38
QMQRY geht bestimmt auch, aber das Zählen der Anführungszeichen ist immer so lästig...
Ich glaub in diesem Fall (Bibliotheks- und Dateinamen) geht das auch mit weniger Anführungszeichen. ;)