-
Datensatz per Embedded SQL in Tabelle schreiben mit autogenerated Key
Hallo,
ich habe eine SQL beschriebene Tabelle mit einem autogenerated key:
Code:
create table eddatlib/siszakop (
zk_rec_id decimal(15) generated always as identity,
...
Den Datensatz der Datei habe ich als externe Datenstruktur im Programm deklariert. Die Variable heißt ZAKOPSatz. Ich möchte gerne den kompletten Satz in die Datei schreiben, also nicht alle Felder einzeln. Das mache ich so:
Code:
exec sql insert into siszakop values :ZAKOPSatz;
Ich bekomme beim insert den SQL-Fehler
Code:
Wert kann nicht für GENERATED-ALWAYS-Spalte ZK_REC_ID angegeben werden.
Unerwarteter SQLCOD: -798 in Routine SIS99ZKF01.
Das liegt sicher daran, dass das RPG-Programm den gesamten Datensatz, also auch das Record-ID Feld schreiben will. Beim SQL müsste man aber genau dieses Feld weglassen, da es ja automatisch generiert wird.
Hat vielleicht jemand eine Idee, wie man das hinkriegt? Wenn es keine Lösung gibt, muss ich die Datei wieder so ändern, dass ich die Record-ID selber vergebe.
Dieter
-
Leg eine View an, mit allen Spalten außer der Identity Column.
Definiere den Satz als externe Datenstruktur, fülle die entsprechenden Felder und mach dann den insert gegen die View.
Birgitta
-
Danke Birgitta. Das ist zwar eine gute Idee (muss ich mir merken), aber in diesem Fall möchte ich das lieber nicht machen. Dann hätte ich 2 Stellen, an denen ich bei einer Dateierweiterung Änderungen vornehmen muss. Ich suche eine Lösung, bei der ich den einmal deklarierten Datensatz in die Datei schreiben kann.
Ich hatte gehofft, dass es bei der Definition der Tabelle noch irgendeine Möglichkeit gibt, die dafür sorgt, dass bei Insert immer eine Record-ID automatisch vergeben wird, egal was in der übergebenen Struktur steht. (Bitte jetzt keinen Trigger vorschlagen :-) )
Ich werde die Tabelle dann wohl auf "manuell" zu vergebende Record-ID umstellen.
Vielen Dank.
Dieter
-
... das müsste eigentlich auch mit Nullbyte map gehen
D*B
-
Kann ich die Nullbyte map denn zu einem Bestandteil der Datenstruktur machen? Oder wie sollte man das deklarieren?
Dieter
-
... das sind dann zwei Bestandteile ohne komma dazwischen
insert into ... values(:record :nullb)
D*B
-
Eine Array, also dim(nn) in der Anzahl Felder der DS:
exec sql insert into siszakop values :ZAKOPSatz :ZNullArray;
Das richtige Feld dann mit "-1" als NULL definieren.
-
Welchen Datentyp muss das Array denn haben? Ich dachte, so ein Nullbyte Array bestände aus Indikatoren.
Ein weiteres Problem ist, dass ich die Dimension des Arrays ja zur Compilezeit festlegen muss. Das heißt, beim Hinzufügen eines Feldes in die Dateistruktur ist es mit dem Durchwandeln des Programms nicht getan. Oder darf das Array mehr Elemente beinhalten als Felder in der Datei stehen? Dann könnte man es ja relativ groß machen.
Vielen Dank.
-
Letzteres ist korrekt.
D MyNullArr 5I 0 dim(512)
-
Vielen Dank für die Hilfe!
Dieter
-
Ich habe es ausprobiert. Fubktioniert leider doch nicht. Ich bekomme das Programm kompiliert, aber beim Schreiben in die Datei gibt es Datenzuordnungsfehler und einen SQL-Fehler:
callnew sis99zk01
Datenzuordnungsfehler in Teildatei SISZAKOP.
Datenzuordnungsfehler in Teildatei SISZAKOP.
Datenzuordnungsfehler in Teildatei SISZAKOP.
Nullwerte für Spalte oder Variable ZK_REC_ID nicht zulässig.
Unerwarteter SQLCOD: -407 in Routine SIS99ZKF01.
Anscheinend ist NULL doch noch etwas mehr als wenn man das Feld beim insert ganz weglässt.
Das Feld ist definiert als:
zk_rec_id decimal(15) generated by default as identity,
Dieter
-
Hi zusammen,
war da nicht was mit
PHP-Code:
overriding system value oder
overriding user value
gruß
Michael
Similar Threads
-
By dschroeder in forum NEWSboard Programmierung
Antworten: 40
Letzter Beitrag: 03-11-14, 09:15
-
By Karlchen50 in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 20-08-14, 14:14
-
By JonnyRico in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 02-04-03, 15:52
-
By Michael@Paff.de in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 28-04-02, 08:42
-
By Carsten in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 22-01-02, 08:15
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