4.8. 埋め込み SQL プログラムの処理

これで C プログラムでの埋め込み SQL の作成方法を習得できたので、次はそのプログラムをコンパイルする方法を説明します。 ファイルをコンパイルする前にこれを埋め込み SQL C プリプロセッサで処理します。 プリプロセッサはユーザが使用した SQL 文を特別な関数呼び出しに変換します。 コンパイル後、必要な関数を格納している特別なライブラリにリンクする必要があります。これらの関数は、引数から情報を取り出し、libpq インターフェイスを使った SQL 問い合わせを実行します。 そして結果を返り値用の引数に入れて返します。

プリプロセッサプログラムは ecpg と呼ばれ通常の PostgreSQL インストールに含まれています。 埋め込み SQL プログラムの名前には通常 .pgc という拡張子が付いています。 例えば prog1.pgc というプログラムファイルは、単純に次のように呼び出して前処理することができます。

ecpg prog1.pgc

これにより、prog1.c というファイルが作成されます。 入力ファイルが上記のような命名方式に従っていない場合は、-o を使用して出力ファイルを明示的に指定できます。

前処理されたファイルは通常どおりにコンパイルできます。 例えば、

cc -c prog1.c

生成された C ソースファイルには PostgreSQL のヘッダファイルがインクルードされるので、デフォルトで検索されない場所に PostgreSQL をインストールしている場合はコンパイルコマンドラインに -I/usr/local/pgsql/include のようにオプションを追加する必要があります。

埋め込み SQL プログラムをリンクさせるには、以下のようにして libecpg ライブラリをインクルードします。

cc -o myprog prog1.o prog2.o ... -lecpg

このコマンドラインにさらに -L/usr/local/pgsql/lib などのオプションを追加する必要がある場合もあります。

make を使用してより大規模なプロジェクトの構築を管理する場合には、以下の暗黙ルールを makefile にインクルードすると便利でしょう。

ECPG = ecpg

%.c: %.pgc
        $(ECPG) $<

ecpg コマンドの完全な構文については、PostgreSQL 7.3 リファレンスマニュアル で詳しく説明しています。