Die folgenden Datentypen können an eine externe Bibliothek übergeben werden:
SQL-Datentyp | sqldef.h | C-Typ |
---|---|---|
CHAR | DT_FIXCHAR | Zeichendaten mit einer definierten Länge |
VARCHAR | DT_VARCHAR | Zeichendaten mit einer definierten Länge |
LONG VARCHAR, TEXT | DT_LONGVARCHAR | Zeichendaten mit einer definierten Länge |
UNIQUEIDENTIFIERSTR | DT_FIXCHAR | Zeichendaten mit einer definierten Länge |
XML | DT_LONGVARCHAR | Zeichendaten mit einer definierten Länge |
NCHAR | DT_NFIXCHAR | UTF-8-Zeichendaten mit einer definierten Länge |
NVARCHAR | DT_NVARCHAR | UTF-8-Zeichendaten mit einer definierten Länge |
LONG NVARCHAR, NTEXT | DT_LONGNVARCHAR | UTF-8-Zeichendaten mit einer definierten Länge |
UNIQUEIDENTIFIER | DT_BINARY | Binärdaten mit einer Länge von 16 Byte |
BINARY | DT_BINARY | Binärdaten mit einer definierten Länge |
VARBINARY | DT_BINARY | Binärdaten mit einer definierten Länge |
LONG BINARY | DT_LONGBINARY | Binärdaten mit einer definierten Länge |
TINYINT | DT_TINYINT | 1-Byte-Ganzzahl |
[ UNSIGNED ] SMALLINT | DT_SMALLINT, DT_UNSSMALLINT | [Vorzeichenlose] 2-Byte-Ganzzahl |
[ UNSIGNED ] INT | DT_INT, DT_UNSINT | [Vorzeichenlose] 4-Byte-Ganzzahl |
[ UNSIGNED ] BIGINT | DT_BIGINT, DT_UNSBIGINT | [Vorzeichenlose] 8-Byte-Ganzzahl |
REAL, FLOAT(1-24) | DT_FLOAT | Einfachgenaue Gleitkommazahl |
DOUBLE, FLOAT(25-53) | DT_DOUBLE | Doppeltgenaue Gleitkommazahl |
Es ist nicht möglich, die date- oder time-Datentypen oder die Datentypen DECIMAL oder NUMERIC (einschließlich der money-Datentypen) zu verwenden.
Um Werte für INOUT oder OUT-Parameter zu liefern, verwenden Sie die Funktion set_value. Um IN- und INOUT-Parameter zu lesen, verwenden Sie die Funktion get_value.
Nach einem Aufruf von get_value kann mit der Struktur an_extfn_value der Datentyp des Parameters abgefragt werden. Das folgende Codefragment zeigt ein Beispiel zur Identifizierung des Parameterdatentyps.
an_extfn_value arg; a_sql_data_type data_type; extapi->get_value( arg_handle, 1, &arg ); data_type = arg.type & DT_TYPES; switch( data_type ) { case DT_FIXCHAR: case DT_VARCHAR: case DT_LONGVARCHAR: break; default: return; } |
Weitere Hinweise zu Datentypen finden Sie unter Hostvariablen in Embedded SQL.
Die UTF-8-Datentypen wie NCHAR, NVARCHAR, LONG NVARCHAR und NTEXT werden als UTF-8-kodierte Zeichenfolgen übergeben. Mit einer Funktion wie der Windows-Funktion MultiByteToWideChar kann eine UTF-8-Zeichenfolge in eine weite (Unicode-) Zeichenfolge konvertiert werden.
Sie können NULL als gültigen Wert für alle Argumente übergeben. Funktionen in externen Bibliotheken können NULL als Rückgabewert für jeden Datentyp übergeben.
Um einen Rückgabewert in einer externen Funktion festzulegen, rufen Sie die Funktion set_value mit diesem arg_num-Parameterwert 0 auf. Wenn set_value nicht mit dem Wert für arg_num aufgerufen wird, ist das Funktionsergebnis NULL.
Auch der Datentyp eines Rückgabewerts eines Aufrufs einer gespeicherten Funktion sollte unbedingt festgelegt werden. Das folgende Codefragment zeigt, wie Sie den Rückgabe-Datentyp festlegen.
an_extfn_value retval; retval.type = DT_LONGVARCHAR; retval.data = result; retval.piece_len = retval.len.total_len = (a_sql_uint32) strlen( result ); extapi->set_value( arg_handle, 0, &retval, 0 ); |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |