C言語による埋め込みSQLソースファイルの名前には拡張子pgcを付けてください。
pgcファイルをecpgコマンドでプレコンパイルするとC言語のソースファイルが作成されるので、Cコンパイラを使用してコンパイルしてください。
ecpg testproc.pgc
SQL文に対して、オプティマイザヒントのブロックコメントを指定している場合は、ecpgコマンドに以下のオプションを指定します。
オプティマイザヒントのブロックコメント(以降、ヒント句と呼びます)を有効にします。本オプションを指定しない場合、ecpgのプレコンパイルによりヒント句が取り除かれ、ヒント句が無効となります。
ヒント句が指定可能なSQL文は、SELECT、INSERT、UPDATEおよびDELETEです。
ヒント句が指定可能な位置は、SELECT、INSERT、 UPDATE、DELETEまたはWITHのいずれかのキーワードの直後のみです。それ以外の場所に指定した場合は、構文エラーとなります。
オプティマイザヒントの詳細については、“11.1.1 オプティマイザヒント”を参照してください。
注意
埋め込みSQLのソースファイルについて、以下の注意事項があります。
SJISまたはUTF-16で表現されたマルチバイトコードをEXEC SQLで指定された文やホスト変数宣言に含めることはできません。
BOM(Byte Order Mark)付きのUTF-8は、BOMをソースコードと認識してコンパイル時にエラーになるため、使用しないでください。
ホスト変数名にマルチバイト文字は使用できません。
TYPE名にマルチバイト文字を使用した場合には、定義はできますが使用できません。
プレコンパイルにより出力されたC言語のアプリケーションのコンパイル時は、以下のオプションを指定します。
オプションの種類 | オプションの指定方法 |
---|---|
インクルードファイルのパス | -I/<Symfoware Server クライアント機能のインストールディレクトリ> /include |
ライブラリのパス | -L/<Symfoware Server クライアント機能のインストールディレクトリ>/lib |
ライブラリの種類 | ライブラリ名 | 備考 |
---|---|---|
動的ライブラリ | 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を指定します。
cc -m64 -I/opt/symfoclient64/include -L/opt/symfoclient64/lib -lecpg testproc.c -o testproc
または
cc -xarch=v9 -I/opt/symfoclient64/include -L/opt/symfoclient64/lib -lecpg testproc.c -o testproc
環境変数で、インクルードファイルとライブラリのパスが設定されている場合、コンパイル時に、下記のオプションの指定は不要です。
オプションの種類 | オプションの指定方法 |
---|---|
インクルードファイルのパス | <Symfoware Server クライアント機能のインストールディレクトリ> \include |
ライブラリのパス | <Symfoware Server クライアント機能のインストールディレクトリ> \lib |
ライブラリの種類 | ライブラリ名 | 備考 |
---|---|---|
リンク用ライブラリ | libecpg.lib | |
libpgtypes.lib | pgtypesライブラリを使用する場合 | |
動的ライブラリ | libecpg.dll | |
libpgtypes.dll | pgtypesライブラリを使用する場合 |
注意
Windows における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を設定する)