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. Weitere Hinweise finden Sie unter 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. 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 ist vom Datentyp short int. 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. Weitere Hinweise finden Sie unter conversion_error-Option [Kompatibilität].
Weitere Hinweise finden Sie unter Indikatorvariable.
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.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |