ecpg — 埋め込みSQL用Cプリプロセッサ
ecpg [option...] file...
ecpgは、Cプログラム用の埋め込みSQLプリプロセッサです。
SQL呼び出しを特別な関数呼び出しに置き換えることによって、埋め込みSQL文を含むCプログラムを、通常のCコードに変換します。
これにより、出力ファイルは、任意のCコンパイラツールを使用して処理することができます。
ecpgは、コマンドラインで指定される各入力ファイルを対応するCの出力ファイルに変換します。
入力ファイルは.pgcという拡張子であることが望ましいです。
出力ファイル名の決定にあたり、拡張子が.cに置き換えられます。
出力ファイル名は-oオプションによっても指定でき、こちらが優先します。
このマニュアルページでは埋め込みSQL言語については説明しません。 第36章を参照してください。
ecpgは、以下のコマンドライン引数を受け付けます。
-c
SQLコードから有効なCコードを自動的に生成します。
現在、このオプションはEXEC SQL TYPEに対して使用できます。
-C mode
互換モードを設定します。
modeはINFORMIX、INFORMIX_SE、ORACLEのどれかを取ることができます。
-D symbolCプリプロセッサのシンボルを定義します。
-i同様にシステムインクルードファイルも解析します。
-I directory
追加のインクルード用パスを指定します。
これは、EXEC SQL INCLUDEを使用してインクルードされるファイルを検索する際に使用されます。
デフォルトでは順に、.(カレントディレクトリ)、/usr/local/include、コンパイル時に定義されるPostgreSQLのインクルードディレクトリ(デフォルトでは/usr/local/pgsql/include)、/usr/includeです。
-o filename
ecpgが全ての出力をfilenameに書き込むことを指定します。
-r option
実行時の動作を選択します。
以下のいずれかをoptionとして取ることができます。
no_indicator指示子を使用せずにNULL値を表す特殊な値を使用します。 歴史的にこの方式を使用したデータベースが存在します。
prepareすべての文を使用する前に準備(プリペア)します。 libecpgはプリペアド文のキャッシュを保持し、再実行される場合に文を再利用します。 キャッシュが満杯になった場合、libecpgは最も使用されていない文を解放します。
questionmarks互換性のためにクエスチョンマークをプレースホルダとして許します。 これは大昔にデフォルトでした。
-t
トランザクションの自動コミットを有効にします。
このモードでは、各SQLコマンドは明示的なトランザクションブロックの内部にない限り、自動的にコミットされます。
デフォルトのモードでは、EXEC SQL COMMITが発行された時にのみコマンドがコミットされます。
-vバージョンやインクルード用パスなどの補足情報を表示します。
--versionecpgのバージョンを表示し、終了します。
-?--helpecpgのコマンドライン引数の使用方法を表示し、終了します。
前処理されたCコードファイルをコンパイルする際、コンパイラがPostgreSQLのインクルードディレクトリ内にあるECPGヘッダファイルを検索できるようにしなければなりません。
そのため、コンパイラの呼び出し時に、-Iオプションを使用しなければならない可能性があります(例:-I/usr/local/pgsql/include)。
SQLが埋め込まれたCプログラムには、リンカオプション-L/usr/local/pgsql/lib -lecpgを使用するなどして、libecpgライブラリをリンクする必要があります。
使用するシステムにおいて上記の2つに対応するディレクトリを調べるには、pg_configを使用します。
埋め込みSQLを使用したprog1.pgcというCソースファイルがある場合、次のコマンドを順番に実行すれば、実行可能プログラムを作成することができます。
ecpg prog1.pgc cc -I/usr/local/pgsql/include -c prog1.c cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg