Anmelden

View Full Version : Dynamische SQL in RPG



redsky
17-10-05, 12:34
Hallo zusammen ich habe eine Datei die 12 Monatsfelder hat und ich benötige für jedes Monat nach beendigung von diesem eine Auswertung.

Ich möchte hierzu ein SQLRPGLE erstellen,
meine frage kann ich die feldauswahl variabel gestalten:
hier ein kleines Beispiel

c+ declare c1 cursor for select
c+ menge1, ..............
c+ FROM umsatzdatei
c+ order by menge1
wobei das Feld menge1 variabel sein soll.

danke im voraus
redsky

Fuerchau
17-10-05, 12:39
Dies geht nicht über einen "declare cursor for select" sondern über einen "declare cursor for MyStmt" mit anschliessendem "prepare MyStmt from :MySql". Die Variable MySql ist vorher mit dem Select aufzubereiten. Der Rest (Open/Fetch/Close) kann dann so bleiben.

redsky
17-10-05, 13:00
danke für die schnelle Antwort,

blicke irgendwie nicht durch,
hast du vieleicht ein codebeispiel?

bin ziemlich neu auf diesen gebiet.

danke im voraus
redsky

B.Hauser
17-10-05, 13:19
Hallo Redsky,

1. Du erstellst das SQL-Select-Statement als String.
MySQLStm = 'SELECT ..... '
2. Du generierst ein ausführbares SQL-Statement über den SQL Prepare-Befehl:
/EXEC SQL Prepare MySQLCmd from :MySQLStm
/END-EXEC
3. Du deklarierst einen Cursor, in dem Du statt des SQL-Statements den aufbereiteten SQL-Command angibst:
/EXEC SQL Declare MyCursor For MySQLCMD
/END-EXEC
4. alles andere kann bleiben wie bisher

Solltest Du Literatur über Embedded SQL suchen, schau Dir Kapitel 7 in dem folgenden Redbook an:
Modernizing IBM eServer iSeries Application Data Access - A Roadmap Cornerstone (http://www.redbooks.ibm.com/abstracts/sg246393.html?Open)

Birgitta

redsky
17-10-05, 13:29
danke ich habs schon geschaft


mfg
redsky