PDA

View Full Version : Datensatz per Embedded SQL in Tabelle schreiben mit autogenerated Key



Seiten : 1 [2]

dschroeder
17-06-15, 14:20
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

mk
17-06-15, 14:35
Hi zusammen,

war da nicht was mit


overriding system value oder
overriding user value


gruß
Michael

Fuerchau
17-06-15, 14:36
identity-Spalten dürfen nicht NULL sein und beim Insert/Update aber nicht angegeben werden.
Ggf. klappt das aber mit "hidden"-Spalten, so dass das Feld in der DS nicht auftaucht.
Vielleicht hilft auch "generated always", so dass die Angabe beim Insert ignoriert wird.

dschroeder
17-06-15, 14:49
@Michael:

Klasse! Funktioniert super:


exec sql insert into siszakop overriding user value values :ZAKOPSatz;


Genau so etwas habe ich gesucht. Auf das Nullmap Array kann man dann verzichten.

Vielen Dank.

Dieter

dschroeder
17-06-15, 14:51
identity-Spalten dürfen nicht NULL sein und beim Insert/Update aber nicht angegeben werden.
Ggf. klappt das aber mit "hidden"-Spalten, so dass das Feld in der DS nicht auftaucht.
Vielleicht hilft auch "generated always", so dass die Angabe beim Insert ignoriert wird.

Mit always klappt es nicht. Da wird das Programm nicht gewandelt, wenn man ein Nullmap Array angibt.
Aber das Problem ist ja durch den Tipp von Michael gelöst.

Vielen Dank nochmal an alle.

Dieter