C および C++ でのホスト変数配列
C および C++ プログラムでは、数値、文字、グラフィック、バイナリー、LOB、XML、および ROWID のホスト変数配列を指定できます。 また、LOB ロケーター、および LOB と XML のファイル参照変数を指定することもできます。
ホスト変数配列は、以下のコンテキストでは単純な参照としてのみ参照できます。 構文図では、ホスト変数配列 は、ホスト変数配列への参照を指定します。
- 複数行のフェッチのための FETCH ステートメント内。 FETCH文を参照。
- INSERT文のFOR n ROWS 形式で、ソースデータにホスト変数配列を使用します。 INSERT文を参照してください。
- ソース・データの行が複数ある MERGE ステートメント内。 MERGE文を参照してください。
- EXECUTE文で、INSERT文またはMERGE文の動的 FOR n ROWS形式のパラメータマーカーに値を指定する。 EXECUTE文を参照。
サポートされていない他のコンテキストでアプリケーションがホスト変数配列を参照した場合、 Db2 は SQLCODE -312 エラーを返します。
- 有効なホスト変数配列宣言は、有効な C 宣言の一部のみです。 変数配列の宣言が無効な場合に、 その変数配列を参照する SQL ステートメントがあると、 メッセージ UNDECLARED HOST VARIABLE ARRAY が出される場合があります。
- C および C++ のいずれの場合も、
複数行の INSERT、FETCH、および MERGE ステートメントで使用する次の配列のための構造宣言で、_packed 属性は指定できません。
- 可変長文字配列
- 可変長グラフィック配列
- LOB 配列
数値ホスト変数配列
次の図は、数値ホスト変数配列を宣言するための構文を示しています。
例
以下の例は、数値ホスト変数配列の宣言を示しています。
EXEC SQL BEGIN DECLARE SECTION;
/* declaration of numeric host-variable array */
long serial_num[10];
...
EXEC SQL END DECLARE SECTION;
文字ホスト変数配列
次のフォーマットの文字ホスト変数配列を指定できます。
- NUL 終止符文字形式
- VARCHAR 構造書式
- CLOB
以下の図は、CLOB 以外の各形式の構文を示しています。
下図は、 NUL 終了文字のホスト変数配列を宣言するための構文を示しています。
- 1 次元は 1 ~ 32767 の範囲の整数定数である必要があります。
- 2 この変数に割り当てられる文字列はすべて、NUL文字で終了していなければなりません。 この変数から取り出されるストリングは NUL 終止符です。
- 3 NUL文字で終端するホスト変数配列の文字列は、可変長の文字列(NUL文字を除く)にマッピングされます。
次の図は、可変長文字ホスト変数配列を宣言するための構文を示しています。可変長文字 ( VARCHAR ) 型構造化形式を使用します。
例
下例は、 VARCHAR ホスト変数配列の有効または無効な宣言を示しています。
EXEC SQL BEGIN DECLARE SECTION;
/* valid declaration of VARCHAR host-variable array */
struct VARCHAR {
short len;
char s[18];
} name[10];
/* invalid declaration of VARCHAR host-variable array */
struct VARCHAR name[10];
2 進ホスト変数配列
下図は、バイナリー・ホスト変数配列を宣言するための構文を示しています。
グラフィック・ホスト変数配列
以下のフォーマットのグラフィック・ホスト変数配列を指定できます。
- NUL 終止符グラフィック形式
- VARGRAPHIC 構造化形式
- 次の typedef ステートメントを使用して、sqldbchar データ・タイプを定義する。
typedef unsigned short sqldbchar; - Db2に提供されるヘッダー・ファイル内の typedef ステートメントで定義されている sqldbchar データ型を使用してください。
- C データ・タイプ unsigned short を使用する。
下図は、 NUL 終了グラフィック・ホスト変数配列を宣言するための構文を示しています。
- 1 次元は 1 ~ 32767 の範囲の整数定数である必要があります。
- 2 の長さは、1より大きく16352より小さい十進整数定数でなければなりません。
- 3 この変数に割り当てられる文字列は、すべてNUL文字で終了していなければなりません。 この変数から取り出されるストリングは NUL 終止符です。
- 4 NUL文字で終了するグラフィックホスト変数配列にシングルバイト文字を割り当てないでください
次の図は、 VARGRAPHIC 構造化フォームを使用するグラフィック・ホスト変数配列を宣言するための構文を示しています。
例
次の例は、VARGRAPHIC構造化形式を使用するグラフィックホスト変数配列の有効または無効な宣言を示しています。EXEC SQL BEGIN DECLARE SECTION;
/* valid declaration of host-variable array vgraph */
struct VARGRAPH {
short len;
sqldbchar d[10];
} vgraph[20];
/* invalid declaration of host-variable array vgraph */
struct VARGRAPH vgraph[20];LOB、ロケーター、およびファイル参照変数配列
次の図は、 BLOB、 CLOB、および DBCLOB のホスト変数配列、ロケーターおよびファイル参照変数を宣言するための構文を示しています。
XML ホストおよびファイル参照変数配列
次の図は、 BLOB 、 CLOB、および DBCLOB のホスト変数配列を宣言するための構文と、 XML データ型のファイル参照変数配列を示しています。
ROWID 変数配列
次の図は、ROWID 変数配列の 宣言の構文です。
