4.5. データを渡す

プログラムからデータベースにデータを渡す場合(たとえば問い合わせ内ののパラメータとして)、あるいはデータベースからプログラムにデータを戻す場合には、そのデータの格納先となる C 変数を特別にマークされたセクションで宣言することで、埋め込み SQL プリプロセッサがこれらの C 変数を認識できるようにする必要があります。

このセクションは次のように始まります。

EXEC SQL BEGIN DECLARE SECTION;

そして以下のように終わります。

EXEC SQL END DECLARE SECTION;

初めと終わりの行の間には、次のような通常の C 変数宣言が入ります。

int   x;
char  foo[16], bar[16];

宣言は通常の C 変数として出力ファイルにも反映されるので、これらを再度宣言する必要はありません。 SQL コマンドで使用されない変数は、こうした特別なセクションの外側で通常どおりに宣言できます。

構造体や共用体の定義は必ず DECLARE セクションでリストされなければいけません。 そうしないと、プリプロセッサは、定義に気づかないためにこれらの型を扱えなくなります。

特別な型である VARCHARVARCHAR2 は、変数ごとに名前のある構造体に変換されます。下記のような宣言があった場合を考えてみます。

VARCHAR var[180];

これは、下のように変換されます。

struct varchar_var { int len; char arr[180]; } var;

この構造体は、VARCHAR 型の SQL データのインタフェースとして適当です。

SQL 文で正しく宣言された C 変数を使用するために、式が必要な場合には :varname を記述してください。 前の節の例を参照してください。