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 » Hostvariablen verwenden

 

C-Hostvariablentypen

Nur eine begrenzte Anzahl von C-Datentypen werden als Hostvariablen unterstützt. Andererseits haben bestimmte Hostvariablen keinen entsprechenden Datentyp in C.

In der Header-Datei sqlca.h festgelegte Makros können dazu verwendet werden, Hostvariablen des folgenden Typs zu definieren: NCHAR, VARCHAR, NVARCHAR, LONGVARCHAR, LONGNVARCHAR, BINARY, LONGBINARY, DECIMAL, DT_FIXCHAR, DT_NFIXCHAR, DATETIME (SQLDATETIME), BIT, BIGINT oder UNSIGNED BIGINT. Sie werden wie folgt benutzt:



EXEC SQL BEGIN DECLARE SECTION;
DECL_NCHAR                 v_nchar[10];
DECL_VARCHAR( 10 )         v_varchar;
DECL_NVARCHAR( 10 )        v_nvarchar;
DECL_LONGVARCHAR( 32768 )  v_longvarchar;
DECL_LONGNVARCHAR( 32768 ) v_longnvarchar;
DECL_BINARY( 4000 )        v_binary;
DECL_LONGBINARY( 128000 )  v_longbinary;
DECL_DECIMAL( 30, 6 )      v_decimal;
DECL_FIXCHAR( 10 )         v_fixchar;
DECL_NFIXCHAR( 10 )        v_nfixchar;
DECL_DATETIME              v_datetime;
DECL_BIT                   v_bit;
DECL_BIGINT                v_bigint;
DECL_UNSIGNED_BIGINT       v_ubigint;
EXEC SQL END DECLARE SECTION;

Der Präprozessor erkennt diese Makros innerhalb eines Deklarationsabschnitts und behandelt Variable ihrem Typ entsprechend. Es wird empfohlen, den Typ DECIMAL (DT_DECIMAL, DECL_DECIMAL) nicht zu verwenden, da das Format von Dezimalzahlen herstellerspezifisch ist.

Die folgende Tabelle zeigt die C-Variablentypen, die als Hostvariablen erlaubt sind und die entsprechenden Datentypen der Embedded SQL-Schnittstelle.

C-Datentyp Datentyp der Embedded SQL-Schnittstelle Beschreibung
short              si;
short int          si;
DT_SMALLINT 16-Bit-Ganzzahl mit Vorzeichen
unsigned short int usi;
DT_UNSSMALLINT 16-Bit Ganzzahl ohne Vorzeichen
long              l;
long int          l;
DT_INT 32-Bit-Ganzzahl mit Vorzeichen
unsigned long int ul;
DT_UNSINT 32-Bit Ganzzahl ohne Vorzeichen
DECL_BIGINT       ll;
DT_BIGINT 64-Bit-Ganzzahl mit Vorzeichen
DECL_UNSIGNED_BIGINT ull;
DT_UNSBIGINT 64-Bit-Ganzzahl ohne Vorzeichen.
float f;
DT_FLOAT einfachgenauer 4-Byte-Gleitkommazahl-Wert.
double d;
DT_DOUBLE doppeltgenauer 8-Byte-Gleitkommazahl-Wert.
char a[n]; /*n>=1*/
DT_STRING Mit NULL abgeschlossene Zeichenfolge im CHAR-Zeichensatz. Die Zeichenfolge wird mit Leerzeichen aufgefüllt, wenn bei der Initialisierung der Datenbank mit Leerzeichen aufgefüllte Zeichenfolgen verwendet werden. Diese Variable speichert n-1 Byte und das Nullabschlusszeichen.
char *a;
DT_STRING Mit NULL abgeschlossene Zeichenfolge im CHAR-Zeichensatz. Diese Variable zeigt auf einen Bereich, der bis zu 32766 Byte plus das Nullabschlusszeichen speichern kann.
DECL_NCHAR a[n]; /*n>=1*/
DT_NSTRING Mit NULL abgeschlossene Zeichenfolge im NCHAR-Zeichensatz. Die Zeichenfolge wird mit Leerzeichen aufgefüllt, wenn bei der Initialisierung der Datenbank mit Leerzeichen aufgefüllte Zeichenfolgen verwendet werden. Diese Variable speichert n-1 Byte plus das Nullabschlusszeichen.
DECL_NCHAR *a;
DT_NSTRING Mit NULL abgeschlossene Zeichenfolge im NCHAR-Zeichensatz. Diese Variable zeigt auf einen Bereich, der bis zu 32766 Byte plus das Nullabschlusszeichen speichern kann.
DECL_VARCHAR(n) a;
DT_VARCHAR Zeichenfolge variabler Länge im CHAR-Zeichensatz mit einem 2-Byte-Längenfeld. Nicht mit NULL abgeschlossene oder mit Leerzeichen aufgefüllte Zeichenfolge. Der Maximalwert für n ist 32765 (Byte).
DECL_NVARCHAR(n) a;
DT_NVARCHAR Zeichenfolge variabler Länge im NCHAR-Zeichensatz mit einem 2-Byte-Längenfeld. Nicht mit NULL abgeschlossene oder mit Leerzeichen aufgefüllte Zeichenfolge. Der Maximalwert für n ist 32765 (Byte).
DECL_LONGVARCHAR(n) a;
DT_LONGVARCHAR Zeichenfolge variabler Länge im CHAR-Zeichensatz mit drei 4-Byte-Längenfeldern. Nicht mit NULL abgeschlossene oder mit Leerzeichen aufgefüllte Zeichenfolge.
DECL_LONGNVARCHAR(n) a;
DT_LONGNVARCHAR Zeichenfolge variabler Länge im NCHAR-Zeichensatz mit drei 4-Byte-Längenfeldern. Nicht mit NULL abgeschlossene oder mit Leerzeichen aufgefüllte Zeichenfolge.
DECL_BINARY(n) a;
DT_BINARY Zeichenfolge mit variabler Länge mit 2-Byte-Längenfeld. Der Maximalwert für n ist 32765 (Byte).
DECL_LONGBINARY(n) a;
DT_LONGBINARY Lange Binärdaten von variabler Länge mit drei 4-Byte-Längenfeldern.
char            a; /*n=1*/ 
DECL_FIXCHAR(n) a;
DT_FIXCHAR Zeichenfolge von fester Länge in CHAR-Zeichensatz. Mit Leerzeichen aufgefüllt, aber ohne Nullabschlusszeichen. Der Maximalwert für n ist 32767 (Byte).
DECL_NCHAR       a; /*n=1*/
DECL_NFIXCHAR(n) a;
DT_NFIXCHAR Zeichenfolge von fester Länge in NCHAR-Zeichensatz. Mit Leerzeichen aufgefüllt, aber ohne Nullabschlusszeichen. Der Maximalwert für n ist 32767 (Byte).
DECL_DATETIME a;
DT_TIMESTAMP_STRUCT SQLDATETIME-Struktur
 Zeichensätze
 Datenlänge
 Zeiger auf ein Zeichen (pointer to char)
 Gültigkeitsbereich von Hostvariablen