-
Fehler bei RUNSQLSTM über *SYSRPYL automatisch beantworten
Hallo,
ich habe schon wieder einmal eine undankbare Aufgabe bekommen.
Durch die Konstellation einer Fremd Datenanlieferung an uns und die nicht gleichlaufende Weiterverarbeitung kann es zu dupKey kommen. Da mir da der Job abbricht, suche ich eine Möglichkeit das trotzdem durch zu bekommen. Ich brauche die weiteren Schritte nach diesem CL
Im CL habe ich jetzt folgendes drinnen:
CHGJOB INQMSGRPY(*SYSRPYL)
ADDRPYLE SEQNBR(4712) MSGID(CPF5009) RPY(I)
ADDRPYLE SEQNBR(4713) MSGID(CPF5034) RPY(I)
ADDRPYLE SEQNBR(4714) MSGID(SQL0803) RPY(I)
ADDRPYLE SEQNBR(4715) MSGID(SQL9010) RPY(I)
ADDRPYLE SEQNBR(4716) MSGID(CEE9901) RPY(I)
RUNSQLSTM SRCFILE(*LIBL/QSQLSRC) SRCMBR(T13CRLST) +
COMMIT(*NONE)
RMVRPYLE SEQNBR(4712)
RMVRPYLE SEQNBR(4713)
RMVRPYLE SEQNBR(4714)
RMVRPYLE SEQNBR(4715)
RMVRPYLE SEQNBR(4716)
Trotzdem bricht das CL ab was mache ich falsch?
LG aus Wien
Andreas
Ein AS/400 Dinosaurier since 1989
-
... ich weiß zwar nicht, was Du da wirklich vorhast, aber hast Du mal über RUNSQLSTM ... ERRLVL(...) nachgedacht?
D*B
-
SQLxxxx-Fehler sind keine Antwortfehler. Somit zieht das nicht.
Um also DUPKEY-Fehler auszuschließen musst du einen " where not exists (select * from dest where sorce.key = dest.key) " hinzufügen.
ERRLVL(40) funktioniert nur, wenn du mehrere Befehle in der SRC hast. Dann wird beim Abbruch eines SQL's der nächste trotzdem ausgeführt.
Es liegt leider im SQL begründet, dass dieser beendet wird, sollte ein Fehler auftreten.
-
Zitat von Fuerchau
SQLxxxx-Fehler sind keine Antwortfehler. Somit zieht das nicht.
Um also DUPKEY-Fehler auszuschließen musst du einen " where not exists (select * from dest where sorce.key = dest.key) " hinzufügen.
ERRLVL(40) funktioniert nur, wenn du mehrere Befehle in der SRC hast. Dann wird beim Abbruch eines SQL's der nächste trotzdem ausgeführt.
Es liegt leider im SQL begründet, dass dieser beendet wird, sollte ein Fehler auftreten.
Ich habe mehrere Insert in diesem SQL und die brauche ich alle, der eine doppelte ist mir wurscht kommt aus einem Fremdsystem
Andreas
Ein AS/400 Dinosaurier since 1989
-
Dann nimm ERRLVL(40), der ignoriert alle Fehler bis auf obige Ausnahmen.
Bei einem
insert into tablea
select * from tableb
wird nach der ersten fehlerhaften Zeile abgebrochen, selbst wenn die folgenden Zeilen korrekt wären.
-
Danke mit ERRLVL 40 funktioniert es das eigentliche Problem werde ich angehen, wenn ich Zeit dafür habe.
Andreas
Ein AS/400 Dinosaurier since 1989
Similar Threads
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 11-12-20, 12:04
-
By Arnie in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 10-11-19, 14:00
-
By Twinkie in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 14-12-15, 11:23
-
By TSchuler in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 08-04-14, 14:03
-
By Rolf7856 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 07-01-03, 14:18
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