ecpg:ホスト変数の使い方
詳細は以下にあり
ホスト変数の宣言
BEGIN DECLARE SECTION と END DECLARE SECTION の間にある変数宣言がホスト変数の宣言となる。
「PostgreSQLデータ型とC言語変数型の対応」を見ると適切な型が分かる。
なぜか書かれていないが、char * 型で、ヌル終端文字列バッファへのポインタを渡すことができる。 出力先に使う場合は、オーバーランしないように注意。
code:pgc
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL END DECLARE SECTION;
NULL が入る可能性がある場合は、NULL インジケータとして数値のホスト変数(通常は shortかint)を追加で宣言する必要がある。(名前は任意)(入出力どちらでも使える)
code:pgc
EXEC SQL BEGIN DECLARE SECTION;
short v1_ind;
EXEC SQL END DECLARE SECTION;
ホスト変数の利用
SQL 文などに:ホスト変数名と書くと、そこにホスト変数が割り当てられる。
入力への割り当ては何度同じホスト変数を使っても構わない。(SQL内の出現場所ごとに別の名前を付ける必要はない。)
NULL インジケータを使う場合
:ホスト変数名:NULLインジケータホスト変数名とする。(2つ目の:の手前に空白は入れてもよい)
例 :v1:v1_ind
NULL インジケータは、0が非NULL、負値がNULL
判定する場合は負値かどうかを判定すべき。
設定する時には-1を使うべき。
注意
char のサイズは見ていないので、長さをオーバーするとバッファオーバーランになる。
no_indicator は使うな。ろくな事にならない。