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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere Embedded SQL

 

Lange Werte senden und abfragen

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.

Static SQL-Strukturen

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];  \
         }
Dynamic SQL-Strukturen

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;
Definition von Strukturelementen

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