Es wäre schon mal interessant zu wissen, welche Fehler Du bekommst.
Ansonsten sollte es wie folgt funktionieren.
1. Beide Dateien im Journal registrieren.
2. Programm mit Option COMMIT=*CHG umwandeln (oder besser ein SET OPTION-Statement mit COMMIT=*CHG vor dem 1. SQL-Statement in den QuellCode einfügen)
3. Sicherheitshalber vor dem ersten INSERT ein COMMIT-Statement ausführen (damit nicht festgeschriebene Änderungen, festgeschrieben werden)
4. Erstes Insert ausführen
5. Wenn SQLCODE < *ZEROS --> ROLLBACK (Und Ende)
6. Zweites Insert ausführen
7. Wenn SQLCODE < *ZEROS --> ROLLBACK (Und Ende)
8. COMMIT
Etwa so:
Code:
Exec SQL Set Option Commit=*CHG;
Exec SQL Commit;
Exec SQL Insert ....;
If SQLCODE < *Zeros;
Exec SQL Rollback;
Return;
EndIf;
Exec SQL Insert ....;
If SQLCODE < *Zeros;
Exec SQL Rollback;
Return;
EndIf;
Exec SQL Commit;
Anmerkung: SET TRANSACTION ISOLATION ist nicht erforderlich. SQL startet Commitment Control automatisch, bei COMMIT<>*NONE und falls noch nicht gestartet.
Wenn Du in RPG-Programmen nicht explizit COMMIT in den F-Bestimmungen angegeben hast und die sonstigen SQL-Programme mit INSERT/UPDATE/DELETE mit COMMIT=*NONE umgewandelt hast, passiert nichts, wenn die Commitment Steuerung gestartet bleibt.
Du kannst natürlich auch nach Programm-Ende explizit den CL-Befehl ENDCMTCTL ausführen.
Birgitta
Bookmarks