Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

SQL_DIAG_SEQ_GET - SQLdsg

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() und atof() 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
sich SequenceValue bezieht.

-1

Die Eingabeparameter waren nicht korrekt oder die SQLda wurde nicht als
Diagnosebereich erkannt.

100

Es konnte kein von SESAM/SQL vergebener Wert ermittelt werden.
Mögliche Ursachen:


  • Die INSERT-Anweisung enthielt keinen '*' in der VALUES-Klausel und keine
    Angabe COUNT INTO.


  • Die Ausführung der INSERT-Anweisung war nicht erfolgreich und führte zu
    einem SQLSTATE der Klasse „Fehler“.


  • Die zuletzt mit der gleichen SQLda ausgeführte SQL-Anweisung war keine INSERT-Anweisung.