ecpg — 埋め込みSQL用Cプリプロセッサ
ecpg
[option
...] file
...
ecpg
は、Cプログラム用の埋め込みSQLプリプロセッサです。
SQL呼び出しを特別な関数呼び出しに置き換えることによって、埋め込みSQL文を含むCプログラムを、通常のCコードに変換します。
これにより、出力ファイルは、任意のCコンパイラツールを使用して処理することができます。
ecpg
は、コマンドラインで指定される各入力ファイルを対応するCの出力ファイルに変換します。
入力ファイルは.pgc
という拡張子であることが望ましいです。
出力ファイル名の決定にあたり、拡張子が.c
に置き換えられます。
出力ファイル名は-o
オプションによっても指定でき、こちらが優先します。
このマニュアルページでは埋め込みSQL言語については説明しません。 第35章を参照してください。
ecpg
は、以下のコマンドライン引数を受け付けます。
-c
SQLコードから有効なCコードを自動的に生成します。
現在、このオプションはEXEC SQL TYPE
に対して使用できます。
-C mode
互換モードを設定します。
mode
はINFORMIX
もしくはINFORMIX_SE
のどちらかを取ることができます。
-D symbol
Cプリプロセッサのシンボルを定義します。
-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
バージョンやインクルード用パスなどの補足情報を表示します。
--version
ecpgのバージョンを表示し、終了します。
-?
--help
ecpgのコマンドライン引数の使用方法を表示し、終了します。
前処理された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