ページの先頭行へ戻る
Enterprise Postgres 10 アプリケーション開発ガイド
FUJITSU Software

6.4.2 アプリケーションのコンパイル

C言語による埋め込みSQLソースファイルの名前には拡張子pgcを付けてください。

pgcファイルをecpgコマンドでプレコンパイルするとC言語のソースファイルが作成されるので、Cコンパイラを使用してコンパイルしてください。

プレコンパイルの例

ecpg testproc.pgc

SQL文に対して、オプティマイザヒントのブロックコメントを指定している場合は、ecpgコマンドに以下のオプションを指定します。

--enable-hint

オプティマイザヒントのブロックコメント(以降、ヒント句と呼びます)を有効にします。本オプションを指定しない場合、ecpgのプレコンパイルによりヒント句が取り除かれ、ヒント句が無効となります。

ヒント句が指定可能なSQL文は、SELECT、INSERT、UPDATEおよびDELETEです。

ヒント句が指定可能な位置は、SELECT、INSERT、 UPDATE、DELETEまたはWITHのいずれかのキーワードの直後のみです。それ以外の場所に指定した場合は、構文エラーとなります。

ヒント句の指定例
EXEC SQL SELECT /*+ IndexScan(prod ix01) */ name_id INTO :name_id FROM prod WHERE id = 1;

オプティマイザヒントの詳細については、“11.1.1 オプティマイザヒント”を参照してください。


注意

埋め込みSQLのソースファイルについて、以下の注意事項があります。

  • SJISまたはUTF-16で表現されたマルチバイトコードをEXEC SQLで指定された文やホスト変数宣言に含めることはできません。

  • BOM(Byte Order Mark)付きのUTF-8は、BOMをソースコードと認識してコンパイル時にエラーになるため、使用しないでください。

  • ホスト変数名にマルチバイト文字は使用できません。

  • TYPE名にマルチバイト文字を使用した場合には、定義はできますが使用できません。


プレコンパイルにより出力されたC言語のアプリケーションのコンパイル時は、以下のオプションを指定します。

SolarisLinuxLinux/Solarisの場合
SolarisLinux表6.1 インクルードファイルとライブラリのパス

オプションの種類

オプションの指定方法

インクルードファイルのパス

-I/<FUJITSU Enterprise Postgres クライアント機能のインストールディレクトリ> /include

ライブラリのパス

-L/<FUJITSU Enterprise Postgres クライアント機能のインストールディレクトリ>/lib

SolarisLinux表6.2 C言語用ライブラリ

ライブラリの種類

ライブラリ名

備考

動的ライブラリ

libecpg.so

libpgtypes.so

pgtypesライブラリを使用する場合

静的ライブラリ

libecpg.a

libpgtypes.a

pgtypesライブラリを使用する場合

注意

Solarisで64ビットアプリケーションを作成する場合は、-m64または-xarch=v9の指定が必要です。ご利用のコンパイラが、Oracle Solaris Studio 12.2以降、および、Sun Studio 12の場合、-m64を指定します。Sun Studio 11、Sun Studio 10、および、Sun Studio 9の場合、-xarch=v9を指定します。

Solaris(64ビット)の場合の例:

“<x>”は製品のバージョンレベルを示します。

cc -m64 -I/opt/fsepv<x>client64/include -L/opt/fsepv<x>client64/lib -lecpg testproc.c -o testproc

または

cc -xarch=v9 -I/opt/fsepv<x>client64/include -L/opt/fsepv<x>client64/lib -lecpg testproc.c -o testproc
WindowsWindows(R)の場合

環境変数で、インクルードファイルとライブラリのパスが設定されている場合、コンパイル時に、下記のオプションの指定は不要です。

Windows表6.3 インクルードファイルとライブラリのパス

オプションの種類

オプションの指定方法

インクルードファイルのパス

<FUJITSU Enterprise Postgres クライアント機能のインストールディレクトリ> \include

ライブラリのパス

<FUJITSU Enterprise Postgres クライアント機能のインストールディレクトリ> \lib

Windows表6.4 C言語用ライブラリ

ライブラリの種類

ライブラリ名

備考

リンク用ライブラリ

libecpg.lib

libpgtypes.lib

pgtypesライブラリを使用する場合

動的ライブラリ

libecpg.dll

libpgtypes.dll

pgtypesライブラリを使用する場合

注意

  • Windows(R) におけるlibecpgライブラリは、release かつ multithreadedのオプションで作成されています。本ライブラリに含まれるECPGdebug関数を用いる場合には、本ライブラリを使用するすべてのプログラムにおいて、releaseフラグかつmultithreadedフラグを使用してコンパイルしてください。このときに、libecpg.dllを用いる場合にはdynamicフラグ、libecpg.libを用いる場合にはstaticフラグを使用してください。
    ECPGdebug関数については、“PostgreSQL文書”の“クライアントインタフェース”の“ライブラリ関数”を参照してください。

  • clコマンドは以下のいずれかのコードページで記述されたプログラムを入力として期待しているため、これらのコードページに変換してからコンパイルおよびリンクを行ってください(詳細は、Microsoftのマニュアルを参照してください)。

    • ANSIコンソールコードページ(例:日本語の場合は Shift-JIS)

    • BOM(Byte Order Mark)付き、またはBOMなしのUTF-16リトルエンディアン

    • BOM付き、またはBOMなしのUTF-16ビッグエンディアン

    • BOM付きのUTF-8

    また、clコマンドは、プログラム中の文字列などをANSIコンソールコードページに変換してモジュールを生成するため、データベースサーバとの間で送受信されるデータはANSIコンソールコードページになります。したがって、ANSIコンソールコードページに該当する符号化方式をクライアントの符号化方式に設定してください。

    クライアントの符号化方式の設定方法は、“PostgreSQL文書”の“サーバの管理”の“文字セットサポート”を参照してください。
    (例: 日本語において環境変数を使用する場合、PGCLIENTENCODINGにSJISを設定する)