Die Methode zum Senden und Abrufen von LONG VARCHAR-, LONG NVARCHAR- und LONG BINARY-Werten in Embedded SQL-Anwendungen ist anders als bei den übrigen Datentypen. Die Standard-SQLDA-Felder sind auf 32767-Byte-Daten beschränkt, da die Felder, die die Längeninformationen enthalten (sqldata, sqllen, sqlind), 16-Bit-Werte sind. Eine Änderung dieser Werte auf 32-Bit-Werte würde vorhandene Anwendungen zerstören.
Die Methode zur Beschreibung von LONG VARCHAR-, LONG NVARCHAR- und LONG BINARY-Werten ist dieselbe wie bei anderen Datentypen.
Hinweise über das Abrufen und Senden von Werten finden Sie unter LONG-Daten abrufen und LONG-Daten senden.
Es werden separate Felder verwendet, um die zugeordneten, gespeicherten und ungekürzten Längen von LONG BINARY-, LONG VARCHAR- und LONG NVARCHAR-Datentypen aufzunehmen. Die statischen SQL-Datentypen werden in sqlca.h folgendermaßen definiert:
#define DECL_LONGVARCHAR( size ) \ struct { a_sql_uint32 array_len; \ a_sql_uint32 stored_len; \ a_sql_uint32 untrunc_len; \ char array[size+1];\ } #define DECL_LONGNVARCHAR( size ) \ struct { a_sql_uint32 array_len; \ a_sql_uint32 stored_len; \ a_sql_uint32 untrunc_len; \ char array[size+1];\ } #define DECL_LONGBINARY( size ) \ struct { a_sql_uint32 array_len; \ a_sql_uint32 stored_len; \ a_sql_uint32 untrunc_len; \ char array[size]; \ } |
Bei dynamischem SQL ist das Einstellen des sqltype-Felds auf DT_LONGVARCHAR, LONG NVARCHAR oder DT_LONGBINARY ausreichend. Die zugeordneten LONGVARCHAR-, LONGNVARCHAR- und LONGBINARY-Strukturen sehen folgendermaßen aus:
typedef struct LONGVARCHAR { a_sql_uint32 array_len; a_sql_uint32 stored_len; a_sql_uint32 untrunc_len; char array[1]; } LONGVARCHAR, LONGNVARCHAR, LONGBINARY; |
Sowohl für Static als auch für Dynamic SQL-Strukturen sind die Strukturelemente wie folgt definiert:
array_len (Senden und Abrufen.) Die Anzahl der Byte, die für den Array-Teil der Struktur zugewiesen sind.
stored_len (Senden und Abrufen.) Die Anzahl der im Array gespeicherten Byte. Immer kleiner oder gleich array_len und untrunc_len.
untrunc_len (Nur Abruf.) Die Anzahl der Byte, die im Array gespeichert würden, wenn der Wert nicht gekürzt würde. Immer größer oder gleich stored_len. Bei Kürzung ist dieser Wert größer als array_len.
LONG-Daten abrufen
LONG-Daten senden
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 |