-
Hallo Baldur,
heißt andere Daten = andere Tabellen oder wie ist das gemeint ?
Angenommen, mein Service schreibt in eine Datei (HUGO), dann dürfte das RPG-Programm kein Update auf HUGO machen, aber zwar Datei GUSTAV und BERTA per Update/Write/Delete verarbeiten.
Anbei noch meine StoredProcedure Definition:
Code:
H DECEDIT('0,') DATEDIT(*DMY.)
H DFTACTGRP(*NO) ACTGRP(*CALLER)
CREATE PROCEDURE PGM/MYPGM(IN PUSER CHAR (10 ), IN PMANDBED CHAR
(3 ), IN PMANEF CHAR (3 ), IN PBEDARFNR DEC (10 ), IN PFKST DEC (4
), IN PBEMERK CHAR (80 )) LANGUAGE RPGLE NOT DETERMINISTIC NO SQL
EXTERNAL NAME PGM/MYPGM PARAMETER STYLE GENERAL
CRTSQLRPGI OBJ(PGM/MYPGM) SRCFILE(PGMSRC/QRPGLESRC) COMMIT(
*NONE)
OUTPUT(*PRINT) OPTION(*XREF *SEQSRC) CLOSQLCSR(*ENDMOD) DBGVIEW(
*SOURCE)
Gruß
Bratmaxxe
-
Der Fehler liegt in der Prozedure-Deklaration:
NO SQL
erlaubt keine Dateioperationen!
CONTAINS SQL wäre da schon besser.
Dann klappts eigentlich auch mit Transaktionen.
Wichtig ist aber, dass dein Programm keine OPTION COMMIT=*NONE enthält sonst wirds hier auch schwierig.
Alle Dateien, die du in deinem Programm verwendest sollten/müssen journalisiert sein, da sonst ein Rollback unmöglich ist.
-
Hallo Baldur,
habe alles gemäß Posting berücksichtigt - funktioniert leider immer noch nicht...
Als ich jedoch in den F-Bestimmungen für die Datei das Schlüsselwort "COMMIT" angegeben habe, funktionierte es tatsächlich !
Der EJB Service läuft, jedoch melden andere RPG Programme die die StoredProcedure aufrufen "Fehlernachricht CPF4326 wurde während OPEN für Datei XYZ - tatsächliche Datei ist XYZ"...
Wie komm ich aus dieser misslichen Lage wieder raus ?
Gruß
Bratmaxxe
-
Wenn eine Datei unter Commit-Steuerung bearbeitet werden soll, so muss vorher ein STRCMTCTL abgesetzt werden.
SQL macht dies für dich automatisch.
Dein Problem ist dann jedoch, dass deine anderen Programme nach Aufruf der Prozedur auch einen Commit absetzen müssen, damit die Änderungen festgeschrieben werden, sonst läuft alles bis zum Jobende unter einer Transaktion für die dann ein Rollback abgesetzt wird.
Insgesamt stellt sich also die Mischung aus Aufruf aus SQL (ODBC) und Aufruf aus anderen Programmen als problematisch dar.
Eine Lösung kann ich dir da so direkt nicht anbieten.
Auch wenn du dein Prozedur auf rein SQL umstellst, hast du immer noch das Problem, dass OPTION COMMIT=*NONE nicht erlaubt ist und beim Aufruf ohne vorherigen STRCMTCTL deine Prozedur mit Fehler auf die Datei zugreift.
Die einzige Möglichkeit hier ist wohl, zwei Versionen zu stricken.
a) Prozedur zum Aufruf aus SQL
b) Programm zum Aufruf aus anderen Quellen
Besser wäre aber immer noch ein Trigger, denn da wäre es dann egal da du nur Puffer veränderst.
Similar Threads
-
By Mr.iSeries in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 17-01-07, 10:57
-
By Xanas in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 13-12-06, 13:38
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By borwegen in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 30-06-06, 09:04
-
By Bruno Jakob in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 28-02-02, 12:57
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