★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

ecpg

名前

ecpg -- 埋め込みSQL用Cプリプロセッサを使用する

概要

ecpg [option...] file...

説明

ecpgは、Cプログラム用の埋め込みSQLプリプロセッサです。 SQL呼び出しを特殊な関数呼び出しに置き換えることによって、埋め込みSQL文を含むCプログラムを、通常のCコードに変換します。 これにより、出力ファイルは、どのようなCコンパイラツールを使用しても処理することができます。

ecpgは、コマンドラインで指定される各入力ファイルを対応するCの出力ファイルに変換します。 入力ファイルに.pgcという拡張子を付けておくと、出力ファイル名の拡張子が.cに置き換えられるので便利です。 入力ファイルの拡張子が.pgcでない場合、そのファイルのフルネームの末尾に.cを追加したものが出力ファイル名となります。 出力ファイル名は、-oオプションによって上書きすることもできます。

このマニュアルページでは埋め込みSQL言語については説明しません。 第33章を参照してください。

オプション

ecpgは、以下のコマンドライン引数を受け付けます。

-c

SQLコードから有効なCコードを自動的に生成します。 現在、このオプションはEXEC SQL TYPEに対して使用できます。

-C mode

互換モードを設定します。 modeINFORMIXもしくは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