-
COBOL SQL INSERT Satznummer des Inserts
Hallo,
im COBOL Programm mit embedded SQL mache ich einen INSERT.
Wenn dieser Insert erfolgreich war benötige ich die Satznummer (RRN(A)) des eingefügten Satzes (am besten als Returnvalue).
Ein nachfolgender SELECT MAX... oder SELECT mit den Werten des INSERTs ist nicht eindeutig genug (das liegt an der Anwendung).
Vielen Dank
-
Dies ist leider per SQL nicht möglich.
Die Funktion RRN(A) ist ein "kalkuliertes" Ergebnis in SQL auch wenn sich diese RRN außer bei einem RGZPFM ja nie ändert.
Hier hilft wirklich nur eine Identity-Spalte.
Wenn die Tabelle keinen eindeutigen Schlüssel hat, kommst du an diesen Satz nicht mehr dran, schließlich können ja 2 Programme gleichzeitig einen Insert machen.
Und bei einem REUSEDLT(*YES) liefert MAX(RRN(A)) auch nicht den korrekten Wert.
Mittels
select ... from final table (insert into myfile ...)
kann man Feldinhalte die durch Trigger/Defaults gefüllt werden dann wieder auslesen.
Wozu brauchst du die Information denn, wenn du einen Insert machst?
-
Zitat von Fuerchau
Dies ist leider per SQL nicht möglich.
... zum Glück! Zum Glück, das ist doch kein Datenschrank-System.
D*B
-
Sofern man das richtige Release hat und SELECT ... FROM FINAL TABLE absetzen kann, kommt man auch an die entsprechenden relativen Satz-Nr. der eingefügten Sätze.
Code:
Select rrn(a), Fld1, Fldx, Fldy, ...
from Final Table(Insert Into YourTable
Select ....
From ....
Where ....) x
Order By Input Sequence;
Das SELECT-statement (mit samt dem Insert) kann man im DECLARE CURSOR hinterlegen und sich dann durch die einzelnen Sätze loopen.
Das ganze geht natürlich auch bei einem Insert ohne SELECT, also nur über VALUES und aufgelistete Feld-Inhalte.
Ach ja und übrigens, was kaum einer weiß, seit Release 7.1 können auch Indices über die relative Satz-Nr. gebildet werden, was den Zugriff über die relative Satz-Nr. um einiges beschleunigt.
Birgitta
-
Hallo Alle zusammen,
vielen Dank für die Tipps.
Hier noch einige Erklärungen zu Euren Anmerkungen (speziell BenderD):
- Final Table geht leider nicht, da wir gezwungen sind unter V6 zu arbeiten (seufz)
- Einen eindeutigen Satzschlüssel des gerade eingefügten Satzes benötigt man sehr wohl, wenn nach dem Insert eine weitere Funktion sich genau diesem Satz widmen soll, die Schlüsselkomponenten jedoch VOR dem Insert nicht eindeutig sein können (z.B. Timestamp, weshalb ich nach dem INSERT keinen sicheren Select absetzen kann, denn dann müsste ich ja den Timstamp der erzeugt wird vorher wissen) UND die Tabelle von mehreren Programmen asynchron beschrieben werden. In diesem Fall ist es eine Schnittstelle die sowohl von einem Externen System als auch von der I5 beschrieben wird. Schnittstellen werden ein immer größeres Thema.
Gruß
HEG
-
Zitat von heg
- Einen eindeutigen Satzschlüssel des gerade eingefügten Satzes benötigt man sehr wohl, wenn
HEG
Da bin ich (fast) Deiner Meinung: einen eindeutigen Schlüssel braucht man ohne wenn und aber!!!
... genau dafür sind sogenannte Kunstkeys gut (BTW Timestamps taugen nicht als eindeutiger Key, auch nicht in Kombination mit anderen Feldern). Das geht auch in Verbindung mit Identity columns und der Function IDENTITY_VAL_LOCAL (ab welchem Release habe ich nicht im Kopf), mit eigenen generierten Keys geht das immer.
D*B
-
Hallo BenderD,
ich hab IDENTITY_VAL_LOCAL ausprobiert, sieht gut aus und wäre eine Lösung, aber nicht unter V6
(seufz, seufz).
WARUM MÜSSEN SYSTEMENTWICKLER IMMER UNTER VERTRIEBSHEINIES LEIDEN????
HEG
-
Werd im nächsten Leben VERTRIEBSHEINI und lasse deinen SYSTEMENTWICKLER leiden ;-)
-
IDENTITY_VAL_LOCAL ist auf alle Fälle schon älter als Release 6.1.
Wir setzen es auf alle Fälle unter V5R4 ein (und wenn ich mich recht erinnere hatten wir es bereits unter V5R2 am Laufen).
Ich leide auch noch unter den Altlasten, aber weniger der Vertriebsfuzzis, sondern viel mehr der Wiederstandskraft einiger Kunden gegenüber Neuerungen.
Software-Häuser (sofern sie nicht gerade SAP o.ä heißen) sind am ärmsten dran, wir dürfen/können erst dann eine Stufe höher gehen wenn der letzte Kunde die nächste Stufe erreicht hat.
Birgitta
-
... IDENTITY_VAL_LOCAL kam mit V5R2 und davor gab es schon keinen Grund diesen Murks mit RRN zu versuchen (das taugt als Key Kriterium garnichts). Das geht mit einer Kunstkey Spalte und einer UDF GetKey, wie sie auf meiner Freeware Seite zu finden ist, einfach, elegant und schnell. Im Programm erst den Schlüssel holen, sich merken und dann insert.
Ganz am Rande sei vermerkt: wenn ich erst den Satz schreibe, dann noch weitere Werte ermittle und dazu den Satz nochmal lese, dann ist das von rückwärts durch die Brust ins Auge - Programm technische Komplexität ist meistens ein Zeichen für zweitbestes Design. Wobei eine Datei ohne primary Key ist natürlich immer Murks.
D*B
-
Danke, danke für die schnelle Hilfe.
@ B.Hauser Ich werd mich nochmal drum kümmern, vielleicht hab ich ja was falsch gemacht.
@ B.Hauser Bei uns ist das auch so: erst wenn der letzte V5R3M0(!!!) verlassen hat....
@ Admi: Thread kann als gelöst geschlossen werden.
Similar Threads
-
By KingofKning in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 10-10-14, 08:13
-
By msost in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 07-10-14, 13:15
-
By infomio in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 03-04-03, 12:58
-
By Robi in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 21-03-03, 09:16
-
By Claudia Lange in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 23-07-02, 11:32
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