Mit SQL_DIAG_SEQ_GET kann die von statischen INSERT-Anweisungen bekannte Funktionalität RETURN INTO für dynamische INSERT-Anweisungen nachgebildet werden.
SQL_DIAG SEQ_GET liefert den Wert, der von SESAM/SQL in einer INSERT-Anweisung für einen '*' in der VALUES-Klausel bzw. bei der Angabe von COUNT INTO vergeben wurde..
Die Funktion kann auch für statische INSERT-Anweisungen genutzt werden.
Sie wird als LLM 'SQLDSG' in der Bibliothek SIPLIB.SESAM-SQL.090.CLI zur Verfügung gestellt. Wenn sie in einem Anwenderprogramm genutzt werden soll, muss entweder das LLM explizit hinzugebunden werden oder die Bibliothek zur Laufzeit als BLSLIBxx angegeben werden. Die Schnittstellen dieser Funktion werden in der Bibliothek als S-Elemente sqldsg.h (für C) und sqldsg (für COBOL) bereitgestellt.
CLI-Deklaration in C:
extern void SQL_DIAG_SEQ_GET( struct SQLda_t *SQLda ,char *SequenceValue ,signed short *RC);
CLI-Deklaration in COBOL:
IDENTIFICATION DIVISION. PROGRAM-ID. SQLdsg IS PROTOTYPE. DATA DIVISION. LINKAGE SECTION. COPY SQLCA . *> for group item SQLda 01 SequenceValue PIC X(34). 01 RC PIC S9(4) BINARY. PROCEDURE DIVISION USING SQLda, SQL_SequenceValue, RC. END PROGRAM SQLdsg.
SQLda
SQL-Diagnosebereich, mit dem die INSERT-Anweisung ausgeführt wurde.Falls die SQLda eines COBOL/ESQL-Programms aus einem C-Programm heraus referiert werden soll, so muss sie in COBOL als EXTERNAL angegeben werden.
SequenceValue
Speicherbereich, in den das Ergebnis übertragen werden soll. Der Bereich muss mindestes 34 Byte groß sein.
Der Wert hat bei erfolgreicher Übertragung (RC=0) 34 Zeichen und folgendes Format, wobei mindestens eine Ziffer geliefert wird:
[<Leerzeichen>...]{+|-}[Ziffer...][.][Ziffer...]<Leerzeichen>
Das Format ist so gewählt,
dass der Wert mit den C-Funktionen
strtol()
,atol()
,srtod()
,strtof()
undatof()
in entsprechende numerische oder Gleitpunktvariablen von C übertragen werden kann.dass der Wert mit der COBOL-Funktion NUMVAL in entsprechende numerische COBOL-Variablen übertragen werden kann.
Bei RC ≠ 0 ist der Inhalt von SequenceValue
ungeändert.
RC
Rückgabewert:
0 | Der gewünschte Wert ist in den Speicherbereich übertragen worden, auf den |
-1 | Die Eingabeparameter waren nicht korrekt oder die SQLda wurde nicht als |
100 | Es konnte kein von SESAM/SQL vergebener Wert ermittelt werden. |
| |
| |
|