プログラムからデータベースにデータを渡す場合(たとえば問い合わせ内ののパラメータとして)、あるいはデータベースからプログラムにデータを戻す場合には、そのデータの格納先となる C 変数を特別にマークされたセクションで宣言することで、埋め込み SQL プリプロセッサがこれらの C 変数を認識できるようにする必要があります。
このセクションは次のように始まります。
EXEC SQL BEGIN DECLARE SECTION;
そして以下のように終わります。
EXEC SQL END DECLARE SECTION;
初めと終わりの行の間には、次のような通常の C 変数宣言が入ります。
int x; char foo[16], bar[16];
宣言は通常の C 変数として出力ファイルにも反映されるので、これらを再度宣言する必要はありません。 SQL コマンドで使用されない変数は、こうした特別なセクションの外側で通常どおりに宣言できます。
構造体や共用体の定義は必ず DECLARE セクションでリストされなければいけません。 そうしないと、プリプロセッサは、定義に気づかないためにこれらの型を扱えなくなります。
特別な型である VARCHAR と VARCHAR2 は、変数ごとに名前のある構造体に変換されます。下記のような宣言があった場合を考えてみます。
VARCHAR var[180];
これは、下のように変換されます。
struct varchar_var { int len; char arr[180]; } var;
この構造体は、VARCHAR 型の SQL データのインタフェースとして適当です。
SQL 文で正しく宣言された C 変数を使用するために、式が必要な場合には :varname を記述してください。 前の節の例を参照してください。