Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - Programmierung » Embedded SQL » Der SQL-Deskriptor-Bereich (SQLDA)

 

SQLDA-Hostvariablen-Beschreibungen

Jede sqlvar-Struktur im SQLDA-Bereich beschreibt eine Hostvariable. Die Felder der sqlvar-Struktur haben folgende Bedeutung:

  • sqltype   Der Typ der Variablen, die von diesem Deskriptor beschrieben wird. Siehe Datentypen in Embedded SQL.

    Das "low order Bit" zeigt an, ob NULL erlaubt ist. Gültige Typen- und Konstantendefinitionen befinden sich in der Header-Datei sqldef.h.

    Dieses Feld wird von der DESCRIBE-Anweisung belegt. Sie können dieses Feld mit jedem Typ belegen, wenn Sie Daten an den Datenbankserver liefern oder Daten vom Datenbankserver abrufen. Erforderliche Typkonvertierungen erfolgen automatisch.

  • sqllen   Länge der Variable. Ein sqllen-Wert hat den Typ a_sql_len. Was der Wert dieser Variable tatsächlich bedeutet, hängt von den Informationen zum Typ ab und davon, wie der SQLDA-Bereich verwendet wird.

    Bei LONG VARCHAR-, LONG NVARCHAR- und LONG BINARY-Datentypen wird das Feld array_len der Datentypstruktur DT_LONGVARCHAR, DT_LONGNVARCHAR oder DT_LONGBINARY anstelle des Felds sqllen verwendet.

    Weitere Hinweise zum Längenfeld finden Sie unter SQLDA sqllen-Feldwerte.

  • sqldata   Ein Zeiger auf den Speicher, der von der Variablen belegt wird. Dieser Speicherinhalt muss typ- und längenmäßig den Angaben in den Feldern sqltype und sqllen entsprechen.

    Informationen zu Speicherformaten finden Sie unter Datentypen in Embedded SQL.

    Bei UPDATE- und INSERT-Anweisungen spielt diese Variable keine Rolle für den Vorgang, falls der sqldata-Zeiger ein Null-Zeiger ist. Bei FETCH werden keine Daten zurückgegeben, falls der sqldata-Zeiger ein Null-Zeiger ist. In anderen Worten, die vom Zeiger sqldata zurückgegebene Spalte ist eine ungebundene Spalte.

    Falls die DESCRIBE-Anweisung LONG NAMES benutzt, enthält dieses Feld den Langnamen der Ergebnismengen-Spalte. Falls die DESCRIBE-Anweisung darüber hinaus eine DESCRIBE USER TYPES-Anweisung ist, dann enthält dieses Feld den Langnamen des benutzerdefinierten Datentyps statt der Spalte. Ist der Typ ein vordefinierter Datentyp, ist das Feld leer.

  • sqlind   Ein Zeiger auf den Indikatorwert. Ein Indikatorwert hat den Typ a_sql_len. Ein negativer Indikatorwert zeigt NULL an. Ein positiver Indikatorwert bedeutet, dass diese Variable von einer FETCH-Anweisung gekürzt wurde. Der Indikatorwert enthält die Länge der Daten, bevor sie gekürzt wurden. Der Wert -2 zeigt einen Konvertierungsfehler an, wenn die Datenbankoption conversion_error auf Off gesetzt ist. Siehe conversion_error-Option.

    Siehe Indikatorvariablen.

    Ist der sqlind-Zeiger ein Null-Zeiger, gehört keine Indikatorvariable zu dieser Hostvariable.

    Das sqlind-Feld wird auch in der DESCRIBE-Anweisung verwendet, um Parametertypen anzuzeigen. Ist der Datentyp benutzerdefiniert, wird das Feld auf DT_HAS_USERTYPE_INFO gesetzt. In diesem Fall sollten Sie DESCRIBE USER TYPES ausführen, um Informationen zum benutzerdefinierten Datentyp zu erhalten.

  • sqlname   Eine VARCHAR-ähnliche Struktur wie die Folgende:
    struct sqlname {
       short int  length;
       char  data[ SQL_MAX_NAME_LEN ];
    };

    Sie wird durch eine DESCRIBE-Anweisung gefüllt und wird nur dafür benutzt. Dieses Feld hat verschiedene Bedeutungen für zwei Formate der DESCRIBE-Anweisung:

    • SELECT LIST   Der Namensdatenpuffer ist mit dem Spaltentitel des entsprechenden Elements in der ausgewählten Liste belegt.

    • BIND VARIABLES   Der Namensdatenpuffer ist mit dem Namen der Hostvariablen belegt, die als Bindevariable benutzt wurde, oder mit "?", falls eine namenlose Parametermarkierung verwendet wurde.

    Handelt es sich um eine DESCRIBE SELECT LIST-Anweisung, sind alle vorhandenen Indikatorvariablen mit einer Markierung (flag) belegt, die anzeigt, ob das Listenelement aktualisierbar ist. Weitere Hinweise über diese Markierung finden Sie in der Header-Datei sqldef.h.

    Handelt es sich um eine DESCRIBE USER TYPES-Anweisung, dann enthält dieses Feld den Langnamen des benutzerdefinierten Datentyps anstelle der Spalte. Ist der Typ ein vordefinierter Datentyp, ist das Feld leer.