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

SQL Anywhere 12.0.1 » SQL Anywhere サーバー プログラミング » Embedded SQL » Embedded SQL のホスト変数

 

C ホスト変数型

ホスト変数として使用できる 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 のインターフェイスのデータ型 説明
short              si;
short int          si;
DT_SMALLINT 16 ビット符号付き整数
unsigned short int usi;
DT_UNSSMALLINT 16 ビット符号なし整数
long              l;
long int          l;
DT_INT 32 ビット符号付き整数
unsigned long int ul;
DT_UNSINT 32 ビット符号なし整数
DECL_BIGINT       ll;
DT_BIGINT 64 ビット符号付き整数
DECL_UNSIGNED_BIGINT ull;
DT_UNSBIGINT 64 ビット符号なし整数
float f;
DT_FLOAT 4 バイトの単精度浮動小数点値
double d;
DT_DOUBLE 8 バイトの倍精度浮動小数点値
char a[n]; /*n>=1*/
DT_STRING CHAR 文字セット内の NULL で終了する文字列。データベースがブランクを埋め込まれた文字列で初期化されると、文字列にブランクが埋め込まれます。この変数には、n-1 バイトと NULL ターミネーターが保持されます。
char *a;
DT_STRING CHAR 文字セット内の NULL で終了する文字列。この変数は、最大 32766 バイトと NULL ターミネーターを保持できる領域を指します。
DECL_NCHAR a[n]; /*n>=1*/
DT_NSTRING NCHAR 文字セット内の NULL で終了する文字列。データベースがブランクを埋め込まれた文字列で初期化されると、文字列にブランクが埋め込まれます。この変数には、n-1 バイトと NULL ターミネーターが保持されます。
DECL_NCHAR *a;
DT_NSTRING NCHAR 文字セット内の NULL で終了する文字列。この変数は、最大 32766 バイトと NULL ターミネーターを保持できる領域を指します。
DECL_VARCHAR(n) a;
DT_VARCHAR CHAR 文字セット内の 2 バイトの長さフィールドを持つ可変長文字列。文字列は NULL で終了せず、ブランクも埋め込まれない。n の最大値は 32765 (バイト単位) です。
DECL_NVARCHAR(n) a;
DT_NVARCHAR NCHAR 文字セット内の 2 バイトの長さフィールドを持つ可変長文字列。文字列は NULL で終了せず、ブランクも埋め込まれない。n の最大値は 32765 (バイト単位) です。
DECL_LONGVARCHAR(n) a;
DT_LONGVARCHAR CHAR 文字セット内の 4 バイトの長さフィールドを 3 つ持つ長い可変長文字列。文字列は NULL で終了せず、ブランクも埋め込まれない。
DECL_LONGNVARCHAR(n) a;
DT_LONGNVARCHAR NCHAR 文字セット内の 4 バイトの長さフィールドを 3 つ持つ長い可変長文字列。文字列は NULL で終了せず、ブランクも埋め込まれない。
DECL_BINARY(n) a;
DT_BINARY 2 バイトの長さフィールドを持つ可変長バイナリデータ。n の最大値は 32765 (バイト単位) です。
DECL_LONGBINARY(n) a;
DT_LONGBINARY 4 バイトの長さフィールドを 3 つ持つ長い可変長バイナリデータ。
char            a; /*n=1*/ 
DECL_FIXCHAR(n) a;
DT_FIXCHAR CHAR 文字セット内の固定長文字列。ブランクが埋め込まれますが、NULL で終了しません。n の最大値は 32767 (バイト単位) です。
DECL_NCHAR       a; /*n=1*/
DECL_NFIXCHAR(n) a;
DT_NFIXCHAR NCHAR 文字セット内の固定長文字列。ブランクが埋め込まれますが、NULL で終了しません。n の最大値は 32767 (バイト単位) です。
DECL_DATETIME a;
DT_TIMESTAMP_STRUCT SQLDATETIME 構造体
 文字セット
 データの長さ
 文字ポインター
 ホスト変数のスコープ
 参照