PDA

View Full Version : SQL Last Insert ID



Seiten : 1 [2]

BenderD
17-08-09, 16:29
... sagt mir jetzt aus dem Ärmel erst mal nix, aber der Dummy Select geht schon, dafür gibts extra eine Table, die per constraint nur einen Satz hat:
select ... from sysibm.sysdummy1

D*B



ich benutze keine Embedded SQL an der Stelle sondern das QSQPRCED API, kann man das evtl. auch über EXECUTE direkt ausführen?

Fuerchau
17-08-09, 18:29
@Dieter
Das API entspricht i.W. dem CLI für C/C++ ist nur ungleich komplizierter.

Selbst embedded SQL mit Prepare, Execute und USING SQLDA ist da erheblich einfacher.

Xanas
18-08-09, 06:50
Ggf. reicht hier dann auch ein:

exec sql set : MyLastIdentity = IDENTITY_VAL_LOCAL();


der Precompiler macht das draus

//****ql set :last_id = IDENTITY_VAL_LOCALE();
/END-FREE
C Z-ADD -4 SQLER6
C CALL SQLROUTE
C PARM SQLCA
C PARM SQL_00000
C SQL_00003 IFEQ '1'
C EVAL LAST_ID = SQL_00005
C END
/FREE


kann ich mich da auch dran klemmen?

Fuerchau
18-08-09, 07:44
Nein, leider nicht.
Der Precompiler generiert ein integriertes SQL-Paket und ruft mit verschiedenen Parametern die Ausführung auf.
Wenn du mehrere SQL-Befehle verwendest und dann die Auflösung betrachtest, siehst du, dass sich die Parameter ggf. verändern.
Die Aufrufe selber sind leider nicht dokumentiert und auch für CLI gibt es keine Entsprechungen für "set"-SQL's.

Xanas
18-08-09, 07:47
Schade wäre auch zu schön gewesen,
na dann löse ich das Problem vor erst mal mit dem Dummy Select.