PDA

View Full Version : SQL mit variablen Tabellennamen



Seiten : 1 [2]

Squall
19-10-06, 09:26
Ich arbeite zz ja gerade einmal mit einer Lib. Es ist ein ganz einfacher "Select * from Lib/Table".

Ich habe auch schon probiert das Programm nur auf der i5 auszuführen, bzw den String fest ins Programm zu schreiben. Hat leider beides nichts geholfen.

Muss die zu compilierende Datei evtl von einer anderen Art als SQLRPGLE sein?

Gruß Martin

Fuerchau
19-10-06, 09:32
Die Art des Programmes bleibt SQLRPGLE.
Mach das Ganze mal auf der AS/400 und schau dann mal ins Joblog. Hier muss es weitere Hinweise geben.

Squall
19-10-06, 09:34
Ich habe den Fehler gefunden. Den '*' mag er nicht. Dh. es gibt keine Möglichkeit alle Felder zu selektieren ohne alle anzugeben?

Gruß Martin

Fuerchau
19-10-06, 10:03
Das mag ein Problem sein, allerdings gibt es für so was die Describe-Befehle um die Feldnamen einer Tabelle zu ermitteln.

Anscheinend wird "select * ..." nur vom CLI-Interface unterstützt.

Squall
19-10-06, 12:11
Also müsste ich mir um einen "Select * ..." abzusetzen ein ILE RPG Programm mit CLI schreiben... Das ist auch etwas dumm von IBM umgesetzt worden...

Auf jeden Fall danke für die Information.

Gruß Martin

Fuerchau
19-10-06, 12:34
Das ist gar nicht dumm sondern liegt am Prinzip des embedded SQL's.
Per
describe table :SqlTableName into :SQLDA
kannst du entsprechende Information abfragen.
Eine SQLDA kannst du vorher anlegen, den Select kannst du dann entsprechend zusammen bauen.

Zugegeben etwas mühsam, aber ich habe es so bisher immer gemacht.
Mein Tool SQLCPY arbeitet genau so.

Squall
19-10-06, 12:57
Ja leider ist das wirklich etwas mühsam aber anders wird es eben nicht gehn.

Gruß Martin

Fuerchau
19-10-06, 13:29
Aber Vorsicht:
Beim Fetch gibt es 2 Varianten:
1. mit festen Feldern
2. mit SQLDA

Wenn du mit festen feldern arbeitest kannst du deinen Select ja auch dynamisch fest kodieren:

"select " + Name1 + " as F1, " + Name2 + " as F3 from " + FileName

Fetch ... into :F1, :F2

Alles andere macht da sowieso keinen Sinn da du im Fetch da mit
Fetch mycursor using :mysqlda
arbeiten musst.

Squall
19-10-06, 14:16
Ok danke .

Gruß Martin