ホスト変数として使用できる C のデータ型は非常に限られています。また、ホスト変数の型には、対応する C の型がないものもあります。
sqlca.h ヘッダファイルに定義されているマクロを使用すると、NCHAR、VARCHAR、NVARCHAR、LONGVARCHAR、LONGNVARCHAR、BINARY、LONGBINARY、DECIMAL、DT_FIXCHAR、DT_NFIXCHAR、DATETIME (SQLDATETIME)、BIT、BIGINT、または UNSIGNED BIGINT 型のホスト変数を宣言できます。マクロは次のように使用します。
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; |
プリプロセッサは、Embedded SQL 宣言セクション内のこれらのマクロを認識し、変数を適切な型として処理します。10 進数のフォーマットは独自フォーマットであるため、DECIMAL (DT_DECIMAL, DECL_DECIMAL) 型を使用しないことをおすすめします。
次の表は、ホスト変数で使用できる C 変数の型と、対応する Embedded SQL インタフェースのデータ型を示します。
C データ型 | Embedded SQL のインタフェースのデータ型 | 説明 | ||
---|---|---|---|---|
|
DT_SMALLINT | 16 ビット符号付き整数 | ||
|
DT_UNSSMALLINT | 16 ビット符号なし整数 | ||
|
DT_INT | 32 ビット符号付き整数 | ||
|
DT_UNSINT | 32 ビット符号なし整数 | ||
|
DT_BIGINT | 64 ビット符号付き整数 | ||
|
DT_UNSBIGINT | 64 ビット符号なし整数 | ||
|
DT_FLOAT | 4 バイトの単精度浮動小数点値 | ||
|
DT_DOUBLE | 8 バイトの倍精度浮動小数点値 | ||
|
DT_STRING | CHAR 文字セット内の NULL で終了する文字列。データベースがブランクを埋め込まれた文字列で初期化されると、文字列にブランクが埋め込まれます。この変数には、n-1 バイトと NULL ターミネータが保持されます。 | ||
|
DT_STRING | CHAR 文字セット内の NULL で終了する文字列。この変数は、最大 32766 バイトと NULL ターミネータを保持できる領域を指します。 | ||
|
DT_NSTRING | NCHAR 文字セット内の NULL で終了する文字列。データベースがブランクを埋め込まれた文字列で初期化されると、文字列にブランクが埋め込まれます。この変数には、n-1 バイトと NULL ターミネータが保持されます。 | ||
|
DT_NSTRING | NCHAR 文字セット内の NULL で終了する文字列。この変数は、最大 32766 バイトと NULL ターミネータを保持できる領域を指します。 | ||
|
DT_VARCHAR | CHAR 文字セット内の 2 バイトの長さフィールドを持つ可変長文字列。文字列は NULL で終了せず、ブランクも埋め込まれない。n の最大値は 32765 (バイト単位) です。 | ||
|
DT_NVARCHAR | NCHAR 文字セット内の 2 バイトの長さフィールドを持つ可変長文字列。文字列は NULL で終了せず、ブランクも埋め込まれない。n の最大値は 32765 (バイト単位) です。 | ||
|
DT_LONGVARCHAR | CHAR 文字セット内の 4 バイトの長さフィールドを 3 つ持つ長い可変長文字列。文字列は NULL で終了せず、ブランクも埋め込まれない。 | ||
|
DT_LONGNVARCHAR | NCHAR 文字セット内の 4 バイトの長さフィールドを 3 つ持つ長い可変長文字列。文字列は NULL で終了せず、ブランクも埋め込まれない。 | ||
|
DT_BINARY | 2 バイトの長さフィールドを持つ可変長バイナリデータ。n の最大値は 32765 (バイト単位) です。 | ||
|
DT_LONGBINARY | 4 バイトの長さフィールドを 3 つ持つ長い可変長バイナリデータ。 | ||
|
DT_FIXCHAR | CHAR 文字セット内の固定長文字列。ブランクが埋め込まれますが、NULL で終了しません。n の最大値は 32767 (バイト単位) です。 | ||
|
DT_NFIXCHAR | NCHAR 文字セット内の固定長文字列。ブランクが埋め込まれますが、NULL で終了しません。n の最大値は 32767 (バイト単位) です。 | ||
|
DT_TIMESTAMP_STRUCT | SQLDATETIME 構造体 |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |