アプリケーション開発の手引き


C および C++ でのサポートされている SQL データ・タイプ

特定の事前定義済み C および C++ データ・タイプは、データベース・マネージャーの列タイプに対応しています。これらの C/C++ データ・タイプのみが、ホスト変数として宣言できます。

表 30 は、それぞれの列タイプに対応する C/C++ の列タイプを示しています。プリコンパイラーはホスト変数宣言を検出すると、該当する SQL データ・タイプの値を判別します。データベース・マネージャーはこの値を使用して、アプリケーションとの間でやりとりするデータを変換します。
注:DB2 ホスト言語で、DATALINK データ・タイプをサポートするホスト変数はありません。

表 30. C/C++ 宣言にマップされた SQL データ・タイプ
SQL 列タイプ(1) C/C++ データ・タイプ SQL 列タイプ記述

SMALLINT
(500 または 501)


short
short int
sqlint16

16 ビットの符号付き整数

INTEGER
(496 または 497)


long
long int
sqlint32(2)

32 ビットの符号付き整数

BIGINT
(492 または 493)


long long
long
__int64
sqlint64(3)

64 ビットの符号付き整数

REAL(4)
(480 または 481)

float 単精度浮動小数点

DOUBLE(5)
(480 または 481)

double 倍精度浮動小数点

DECIMAL(p,s)
(484 または 485)

厳密な対応なし; double を使用 パック 10 進数

(パック 10 進フィールドを文字データとして操作するために CHAR および DECIMAL 関数を使用することを推奨。)


CHAR(1)
(452 または 453)

char 単一文字

CHAR(n)
(452 または 453)

厳密な対応なし; char[n+1] を使用 (n はデータを保持するだけの十分な大きさ)


1<=n<=254

固定長文字ストリング

VARCHAR(n)
(448 または 449)


struct tag {
short int;
char[n]
}

1<=n<=32 672

2 バイトのストリング長指定子を持つ、NULL 終了可変文字以外のストリング
代替使用; char[n+1] を使用 (n はデータを保持するだけの十分な大きさ)


1<=n<=32 672

NULL 終了可変長文字ストリング

注:460/461 の SQL タイプを割り当てられる。


LONG VARCHAR
(456 または 457)


struct tag {
short int;
char[n]
}

32 673<=n<=32 700

2 バイトのストリング長指定子を持つ、NULL 終了可変文字以外のストリング

CLOB(n)
(408 または 409)


sql type is
clob(n)

1<=n<=2 147 483 647

4 バイトのストリング長指定子を持つ、NULL 終了可変文字以外のストリング

CLOB ロケーター変数(6)
(964 または 965)


sql type is
clob_locator

サーバー上の CLOB 実体を識別する

CLOB ファイル参照変数(6)
(920 または 921)


sql type is
clob_file

CLOB データを含むファイルの記述子

BLOB(n)
(404 または 405)


sql type is
blob(n)

1<=n<=2 147 483 647

4 バイトのストリング長指定子を持つ、NULL 終了可変文字以外のストリング

BLOB ロケーター変数(6)
(960 または 961)


sql type is
blob_locator

サーバー上の BLOB 実体を識別する

BLOB ファイル参照変数(6)
(916 または 917)


sql type is
blob_file

BLOB データを含むファイルの記述子

DATE
(384 または 385)

NULL 終了文字書式 NULL 終止符を収容するために最低 11 文字を使用できる。
VARCHAR 構造書式 最低 10 文字を使用できる。

TIME
(388 または 389)

NULL 終了文字書式 NULL 終止符を収容するために最低 9 文字を使用できる。
VARCHAR 構造書式 最低 8 文字を使用できる。

TIMESTAMP
(392 または 393)

NULL 終了文字書式 NULL 終止符を収容するために最低 27 文字を使用できる。
VARCHAR 構造書式 最低 26 文字が使用できる。
注:以下のデータ・タイプは、WCHARTYPE NOCONVERT オプションを使用してプリコンパイルする場合の DBCS または EUC 環境でのみ使用できる。

GRAPHIC(1)
(468 または 469)

sqldbchar 単一の 2 バイト文字

GRAPHIC(n)
(468 または 469)

厳密な対応なし; sqldbchar[n+1] を使用 (n はデータを保持するだけの十分な大きさ)


1<=n<=127

固定長 2 バイト文字ストリング

VARGRAPHIC(n)
(464 または 465)


struct tag {
short int;
sqldbchar[n]
}

1<=n<=16 336

2 バイトのストリング長指定子を持つ、NULL 終了可変 2 バイト文字以外のストリング
代替使用; sqldbchar[n+1] を使用 (n はデータを保持するだけの十分な大きさ)


1<=n<=16 336

NULL 終了可変長 2 バイト文字ストリング

注:400/401 の SQL タイプを割り当てられる。


LONG VARGRAPHIC
(472 または 473)


struct tag {
short int;
sqldbchar[n]
}

16 337<=n<=16 350

2 バイトのストリング長指定子を持つ、NULL 終了可変 2 バイト文字以外のストリング
注:以下のデータ・タイプは、WCHARTYPE CONVERT オプションを使用してプリコンパイルする場合の DBCS または EUC 環境でのみ使用できる。

GRAPHIC(1)
(468 または 469)

wchar_t
  • 単一のワイド・キャラクター (C タイプの場合)
  • 単一の 2 バイト文字 (列タイプの場合)


GRAPHIC(n)
(468 または 469)

厳密な対応なし; wchar[n+1] を使用 (n はデータを保持するだけの十分な大きさ)


1<=n<=127

固定長 2 バイト文字ストリング

VARGRAPHIC(n)
(464 または 465)


struct tag {
short int;
wchar_t [n]
}

1<=n<=16 336

2 バイトのストリング長指定子を持つ、NULL 終了可変 2 バイト文字以外のストリング
代替使用; char[n+1] を使用 (n はデータを保持するだけの十分な大きさ)


1<=n<=16 336

NULL 終了可変長 2 バイト文字ストリング

注:400/401 の SQL タイプを割り当てられる。


LONG VARGRAPHIC
(472 または 473)


struct tag {
short int;
wchar_t [n]
}

16 337<=n<=16 350

2 バイトのストリング長指定子を持つ、NULL 終了可変 2 バイト文字以外のストリング
注:以下のデータ・タイプは DBCS または EUC 環境でのみ使用できる。

DBCLOB(n)
(412 または 413)


sql type is
dbclob(n)

1<=n<=1 073 741 823

4 バイトのストリング長指定子を持つ、NULL 終了可変 2 バイト文字以外のストリング

DBCLOB ロケーター変数(6)
(968 または 969)


sql type is
dbclob_locator

サーバー上の DBCLOB 実体を識別する

DBCLOB ファイル参照
変数(TNTA4)
(924 または 925)


sql type is
dbclob_file

DBCLOB データを含むファイルの記述子

注:

  1. SQL 列タイプの下の最初の数字は標識変数が提供されないことを示し、 2 番目の数字は標識変数が提供されることを示します。標識変数は、ヌル値を示したり、切り捨てられたストリングの長さを保留するのに必要です。これらは、これらのデータ・タイプの SQLDA の SQLTYPE フィールドに示される値です。

  2. プラットフォームと互換性を持たせるには、sqlint32 を使用してください。 64 ビットの UNIX プラットフォームでは、 "long" は 64 ビット整数です。 64 ビットの Windows オペレーティング・システムおよび 32 ビットの UNIX プラットフォームでは、 "long" は 32 ビットの整数です。

  3. プラットフォームで互換性を持たせるには、sqlint64 を使用してください。 DB2 ユニバーサル・データベースの sqlsystm.h ヘッダー・ファイルは、 Microsoft コンパイラーを使用する場合には、 Windows NT プラットフォームで sqlint64 を "__int64" とタイプ定義します。また、32 ビットの UNIX プラットフォームでは "long long" と 62 ビットの UNIX プラットフォームでは "long" とタイプ定義します。

  4. FLOAT(n) ここで 0 < n < 25 の場合、REAL と同義。 SQLDA での REAL と DOUBLE の違いは長さの値です (4 または 8)。

  5. 次の SQL タイプは、DOUBLE と同義語。
    • FLOAT
    • FLOAT(n)。ここで、n の取る範囲は 24 < n < 54。
    • DOUBLE PRECISION

  6. これは列タイプではなく、ホスト変数タイプである。

以下に、サポートされている SQL データ・タイプのために宣言されたホスト変数を使用したサンプルの SQL 宣言セクションを示します。

   EXEC SQL BEGIN DECLARE SECTION;
   
.
.
.
short age = 26; /* SQL type 500 */ short year; /* SQL type 500 */ sqlint32 salary; /* SQL type 496 */ sqlint32 deptno; /* SQL type 496 */ float bonus; /* SQL type 480 */ double wage; /* SQL type 480 */ char mi; /* SQL type 452 */ char name[6]; /* SQL type 460 */ struct { short len; char data[24]; } address; /* SQL type 448 */ struct { short len; char data[32695]; } voice; /* SQL type 456 */ sql type is clob(1m) chapter; /* SQL type 408 */ sql type is clob_locator chapter_locator; /* SQL type 964 */ sql type is clob_file chapter_file_ref; /* SQL type 920 */ sql type is blob(1m) video; /* SQL type 404 */ sql type is blob_locator video_locator; /* SQL type 960 */ sql type is blob_file video_file_ref; /* SQL type 916 */ sql type is dbclob(1m) tokyo_phone_dir; /* SQL type 412 */ sql type is dbclob_locator tokyo_phone_dir_lctr; /* SQL type 968 */ sql type is dbclob_file tokyo_phone_dir_flref; /* SQL type 924 */ struct { short len; sqldbchar data[100]; } vargraphic1; /* SQL type 464 */ /* Precompiled with WCHARTYPE NOCONVERT option */ struct { short len; wchar_t data[100]; } vargraphic2; /* SQL type 464 */ /* Precompiled with WCHARTYPE CONVERT option */ struct { short len; sqldbchar data[10000]; } long_vargraphic1; /* SQL type 472 */ /* Precompiled with WCHARTYPE NOCONVERT option */ struct { short len; wchar_t data[10000]; } long_vargraphic2; /* SQL type 472 */ /* Precompiled with WCHARTYPE CONVERT option */ sqldbchar graphic1[100]; /* SQL type 468 */ /* Precompiled with WCHARTYPE NOCONVERT option */ wchar_t graphic2[100]; /* SQL type 468 */ /* Precompiled with WCHARTYPE CONVERT option */ char date[11]; /* SQL type 384 */ char time[9]; /* SQL type 388 */ char timestamp[27]; /* SQL type 392 */ short wage_ind; /* Null indicator */
.
.
.
EXEC SQL END DECLARE SECTION;

以下に、サポートされている C/C++ データ・タイプに関するその他の規則を示します。

C および C++ における FOR BIT DATA

標準的な C または C++ のストリング・タイプである 460 は、FOR BIT DATA に指定された列に使用しないでください。データベース・マネージャーは、NULL 文字が検出されると、このデータ・タイプを切り捨てます。 VARCHAR (SQL タイプ 448) または CLOB (SQL タイプ 408) のどちらかを使用してください。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]