PDA

View Full Version : embedded sql problem



jogisarge
08-05-07, 20:54
Hallo zusammen,

ich versuche gerade ein SQL-Statement in mein RPG-Programm einzubauen, aber ich bekomme nichtmal ein Grundgerüt zum Laufen.
Ich habe mir schon einige Beispiele rausgesucht, aber ich bekomm einen Fehler.

Ich habe schon sämtliche Varianten ausprobiert, aber rich bekomme das nicht zum laufen.
So
bild1.jpg (http://www.freedrive.com/public/pview/1898/bild1.jpg)
So bekomme ich den Fehler *RNF0257 (Eintrag für Formularart für Hauptprozedur ungültig...) beim Umwandeln.
So
bild2.jpg (http://www.freedrive.com/public/pview/1899/bild2.jpg)
streikt der Editor.

wie binde ein SQL-Statement in mein RPG-Programm.

gruss jo

Tonio
08-05-07, 21:37
Hallo Jo,

die Variante im Bild2 ist ok.
Aber ich vermute, dass deine Quellenart nicht richtig ist.
Programm muss von der Art SQLRPG bzw. bei ILE SQLRPGLE sein.

Gruss
Tonio

Fuerchau
09-05-07, 08:34
Bild1 ist falsch, da C-Bestimmungen in der falschen Spalte beginnen.

Bild2 ist korrekt, aber der Editor zeigt dann Fehler an, wenn keine SQL-Anweisung erkannt wird.
Du hast ja auch keine eingegeben:

c/exec sql
c+ ......
c+ ......
c/end-exec

oder so:

c/exec sql set option commit=*none
c/end-exec

Fortsetzungszeilen also mit "c+" einleiten.

jogisarge
09-05-07, 09:15
OK, ich danke euch für die Hilfe.

Damit meine SQL-Commands funktionieren, muss ich die Commit-Steuerung ausschalten.

Kann mir jemand kurz erklären, was das eigentlich ist?

gruss jo

Fuerchau
09-05-07, 09:36
Siehe oben: "commit=*none"

Commitsteuerung heißt:

Dateien werden im Journal aufgezeichnet (STRJRNAP).
Vor Aufruf des Programmes muss STRCMTCTL ausgeführt werden.
Nach Ende des Programmes entsprechend ENDCMTCTL.

Vorteile:
Änderungen an der DB können konsistent über mehrere Dateien gehalten werden (Verminderung oder gar Eliminierung von Rrecovery-Programmen)

Hierzu werden Commit-Zyklen (Transaktionen) festgeschrieben.

Per COMMIT werden sämtliche Änderungen ferstgeschrieben, per ROLLBACK werden alle Änderungen Rückgängig gemacht.

Allerdings:
Transaktionen erfordern ein anderes Konzept der Anwendung (Sperrungen, Transaktionen über Bildschirm-IO hinweg usw.).