-
embedded SQL Cursor with Hold und Commit/Rollback
Hallo zusammen,
ich bräuchte mal etwas Fachexpertise zum Thema Commitsteuerung und RPGLE / SQLRPG.
Ich habe ein steuerndes Programm und Commit=*CS mit Cursor with hold - Definitionen.
Während dieser Cursor durchlaufen wird, wird ein zweites Programm aufgerufen, dass ebenfalls unter Commit = *CS . Solange das zweite Programm den Commit erfolgreich durchführen kann ist alles schöne und mein Cursor aus dem ersten Programm läuft weiter und arbeitet den nächsten Satz ab.
Fällt das zweite Programm aber auf die Nase und ein Rollback wird ausgeführt, werden alle Cursor geschlossen - auch die aus dem steuernden Programm.
Hab ich eine Möglichkeit das zu verhindern bzw. wie würde ich im steuernden Programm wieder auf meinen cursor an genau dieser Stelle zugreifen könne?
Hier mal vereinfacht der Ablauf...
PGM1
...
Declare cursor c1 with hold
Open c1
If SQLCODE =0
DOU ...
fetch next c1
If SQLCODE=0
CALL PGM2
EndIf
ENDDO
...
EndPGM
vielen Dank für Eure Hilfe
-
Aktivationgroup ist dein Freund.
Pgm A sollte eine andere als Pgm B haben
bei der Umwandlung kannst eine angeben und die Tragweite des Close auf diese Actgrp beschränken.
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Ja aber: Activation-Groups erstellen auch getrennte Transaktionen. Das aufgerufene Programm muss also seinen eigenen Commit/Rollback durchführen. Wenn es das nämlich vergisst, war alles für die Katz'.
Allerdings musst du da etwas durcheinander bringen.
Ein Cursor "with Hold" wird beim Rollback eben nicht zurückkgesetzt.
https://www.google.com/search?client...rsor+with+hold
-
Danke für die Infos.
Der Cursor "with hold" wird bei Rollback geschlossen und das ist mein Problem, da er offen bleiben muß für die weiteren Verarbeitungen.
Wenn das nur mit getrennten Aktivierungsgruppen geht, haben wir in unserer Anwendung was zu tun, da wir immer dftactgrp(*no) actgrp(*caller) in den CTL-OPT implemetiert haben.
Oder gibts da noch was anderes?
-
Setz beim SQL Commit und Rollback WORK HOLD dahinter:
Code:
Exec SQL Commit Work Hold;
oder versuch statt des SQL Commit und Rollback den RPG Commit und Rolbk zu verwenden
Birgitta
-
... das mit der ACTGRP ist eh keine gute Idee. Man hat einen Commit Master, das ist der, der die Transaktion steuert und alle slaves sind *CALLER. Das HOLD beim Cursor wirkt nur beim Commit, beim Rollback muss zusätzlich nochmals hold angegeben werden. Das ist zwar kein ANSI, sondern DB2 Erweiterung, sollte aber funzen (sonst ist mit den PTFs was faul).
D*B
-
Nur mal ne blöde Frage:
Bist du sicher, dass der Cursor in der Programmkette eindeutig ist?
Wenn der selbe Cursorname wieder verwendet wird, scheitert der Open aber der Close nicht.
Im Debugmodus solltes du da Hinweise finden können.
-
Ein Cursor-Name muss eindeutig innerhalb einer Quelle/Moduls sein! Außerhalb des Moduls kann der gleiche Cursor-Name wieder verwendet werden, unabhängig davon ob das Programm/Modul/Prozedur in der gleichen Programm-Kette aufgerufen wird.
Similar Threads
-
By harkne in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 16-06-20, 10:45
-
By wti in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 14-05-17, 13:13
-
By Tschabo in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 23-10-16, 19:12
-
By Robi in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 26-02-14, 08:33
-
By Willi1 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 02-05-02, 22:54
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks