Um Informationen zwischen einem Programm und dem Datenbankserver austauschen zu können, müssen alle Datenelemente einen Datentyp haben. Die Konstanten für Embedded SQL haben alle das Präfix DT_ und befinden sich in der Header-Datei sqldef.h. Eine Hostvariable kann jeden der unterstützten Datentypen haben. Sie können diese Datentypen auch in einer SQLDA-Struktur verwenden, um Daten mit der Datenbank auszutauschen.
Sie können mit den DECL_-Makros in sqlca.h Variablen dieser Datentypen definieren. Beispielsweise kann mit DECL_BIGINT eine Variable mit einem BIGINT-Wert deklariert werden.
Folgende Datentypen werden von der Embedded SQL-Programmierschnittstelle unterstützt:
DT_DECIMAL Gepackte Dezimalzahl (systemeigenes Format)
typedef struct TYPE_DECIMAL { char array[1]; } TYPE_DECIMAL; |
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.
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.
DT_DATE Mit NULL abgeschlossene Zeichenfolge, die ein gültiges Datum repräsentiert.
DT_TIME Mit NULL abgeschlossene Zeichenfolge, die eine gültige Zeitangabe repräsentiert.
DT_TIMESTAMP Mit NULL abgeschlossene Zeichenfolge, die einen gültigen Zeitstempel darstellt.
DT_FIXCHAR Zeichenfolge mit fester Länge, die mit Leerzeichen aufgefüllt wird. Im CHAR-Zeichensatz. Die maximale Länge ist 32767 (in Byte). Die Daten enden nicht mit NULL.
DT_NFIXCHAR Zeichenfolge mit fester Länge, die mit Leerzeichen aufgefüllt wird. Im NCHAR-Zeichensatz. Die maximale Länge ist 32767 (in Byte). Die Daten enden nicht mit NULL.
DT_VARCHAR Zeichenfolge variabler Länge, im CHAR-Zeichensatz, mit einem 2-Byte-Längenfeld. Die maximale Länge beträgt 32765 Byte. Beim Senden von Daten müssen Sie das Längenfeld festlegen. Beim Abrufen von Daten setzt der Datenbankserver das Längefeld. Die Daten werden nicht mit NULL abgeschlossen oder mit Leerzeichen aufgefüllt.
typedef struct VARCHAR { a_sql_ulen len; char array[1]; } VARCHAR; |
DT_NVARCHAR Zeichenfolge variabler Länge, im NCHAR-Zeichensatz, mit einem 2-Byte-Längenfeld. Die maximale Länge beträgt 32765 Byte. Beim Senden von Daten müssen Sie das Längenfeld festlegen. Beim Abrufen von Daten setzt der Datenbankserver das Längefeld. Die Daten werden nicht mit NULL abgeschlossen oder mit Leerzeichen aufgefüllt.
typedef struct NVARCHAR { a_sql_ulen len; char array[1]; } NVARCHAR; |
DT_LONGVARCHAR Lange Zeichenfolge von variabler Länge, im CHAR-Zeichensatz.
typedef struct LONGVARCHAR { a_sql_uint32 array_len; /* number of allocated bytes in array */ a_sql_uint32 stored_len; /* number of bytes stored in array * (never larger than array_len) */ a_sql_uint32 untrunc_len;/* number of bytes in untruncated expression * (may be larger than array_len) */ char array[1]; /* the data */ } LONGVARCHAR, LONGNVARCHAR, LONGBINARY; |
Die LONGVARCHAR-Struktur kann mit Daten über 32767 Byte verwendet werden. Große Daten können auf einmal oder mithilfe der Anweisung GET DATA in Einzelschritten abgerufen werden. Sie können entweder auf einmal oder in Abschnitten an den Server übermittelt werden, indem sie an eine Datenbankvariable mit der SET-Anweisung angehängt werden. Die Daten werden nicht mit NULL abgeschlossen oder mit Leerzeichen aufgefüllt.
DT_LONGNVARCHAR Lange Zeichenfolge von variabler Länge, im NCHAR-Zeichensatz. Der Makro definiert wie folgt eine Struktur:
typedef struct LONGVARCHAR { a_sql_uint32 array_len; /* number of allocated bytes in array */ a_sql_uint32 stored_len; /* number of bytes stored in array * (never larger than array_len) */ a_sql_uint32 untrunc_len;/* number of bytes in untruncated expression * (may be larger than array_len) */ char array[1]; /* the data */ } LONGVARCHAR, LONGNVARCHAR, LONGBINARY; |
Die LONGNVARCHAR-Struktur kann mit Daten über 32767 Byte verwendet werden. Große Daten können auf einmal oder mithilfe der Anweisung GET DATA in Einzelschritten abgerufen werden. Sie können entweder auf einmal oder in Abschnitten an den Server übermittelt werden, indem sie an eine Datenbankvariable mit der SET-Anweisung angehängt werden. Die Daten werden nicht mit NULL abgeschlossen oder mit Leerzeichen aufgefüllt.
DT_BINARY Binärdaten variabler Länge mit einem 2-Byte-Längenfeld. Die maximale Länge beträgt 32765 Byte. Wenn Sie dem Datenbankserver Informationen liefern, müssen Sie das Längenfeld setzen. Wenn Sie Informationen vom Datenbankserver abrufen, setzt der Datenbankserver das Längenfeld.
typedef struct BINARY { a_sql_ulen len; char array[1]; } BINARY; |
DT_LONGBINARY Lange Binärdaten. Der Makro definiert wie folgt eine Struktur:
typedef struct LONGVARCHAR { a_sql_uint32 array_len; /* number of allocated bytes in array */ a_sql_uint32 stored_len; /* number of bytes stored in array * (never larger than array_len) */ a_sql_uint32 untrunc_len;/* number of bytes in untruncated expression * (may be larger than array_len) */ char array[1]; /* the data */ } LONGVARCHAR, LONGNVARCHAR, LONGBINARY; |
Die LONGBINARY-Struktur kann mit Daten über 32767 Byte verwendet werden. Große Daten können auf einmal oder mithilfe der Anweisung GET DATA in Einzelschritten abgerufen werden. Sie können entweder auf einmal oder in Abschnitten an den Server übermittelt werden, indem sie an eine Datenbankvariable mit der SET-Anweisung angehängt werden.
DT_TIMESTAMP_STRUCT SQLDATETIME-Struktur mit Feldern für jeden Teil eines Zeitstempels
typedef struct sqldatetime { unsigned short year; /* for example 1999 */ unsigned char month; /* 0-11 */ unsigned char day_of_week; /* 0-6 0=Sunday */ unsigned short day_of_year; /* 0-365 */ unsigned char day; /* 1-31 */ unsigned char hour; /* 0-23 */ unsigned char minute; /* 0-59 */ unsigned char second; /* 0-59 */ unsigned long microsecond; /* 0-999999 */ } SQLDATETIME; |
Die Struktur SQLDATETIME kann verwendet werden, um Felder vom Typ DATE, TIME und TIMESTAMP abzurufen (oder einen beliebigen Datentyp, der in einen dieser Datentypen konvertiert werden kann). Anwendungen haben häufig eigene Formate und einen eigenen Programmcode für Zeit und Datum. Das Abrufen von Daten in diese Struktur vereinfacht die Datenbearbeitung für Sie. Felder vom Typ DATE, TIME und TIMESTAMP können auch mit einem beliebigen Zeichendatentyp abgerufen und aktualisiert werden.
Wenn Sie eine SQLDATETIME-Struktur verwenden, um ein Datum, eine Zeit oder einen Zeitstempel in die Datenbank einzugeben, werden die Felder day_of_year und day_of_week ignoriert.
DT_VARIABLE Mit NULL abgeschlossene Zeichenfolge. Die Zeichenfolge muss der Name einer SQL-Variablen sein, deren Wert vom Datenbankserver benutzt wird. Dieser Datentyp wird ausschließlich benutzt, um Daten an den Datenbankserver zu liefern. Er kann nicht benutzt werden, um Daten vom Datenbankserver abzurufen.
Die Strukturen sind in der Datei sqlca.h festgelegt. Die Datentypen VARCHAR, NVARCHAR, BINARY, DECIMAL und LONG sind für die Deklaration von Hostvariablen nicht geeignet, weil sie ein Ein-Zeichen-Array enthalten. Sie sind allerdings nützlich, um Variablen dynamisch zuzuweisen oder andere Variablen umzuwandeln ("Typecasting").
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |