PostgreSQLスキルアップノート(自己啓発のための個人サイト)
ecpgのごく簡単な例
【一覧に戻る】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■■■■ PostgreSQL スキルアップノート
■■■■
■◆■■ ecpgのごく簡単な例
■■■■
■■■■
■■■■ 2012/09
■■■■ 使用環境:PostgreSQL9.1.4 (CentOS6.2)
(C) 2012 ohdb
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
★自己都合によりマニュアルへのリンクは9.2としています。ご了承下さい。
★このページはそのままカット&ペーストで実行して試すことができます。
【マニュアル】
ecpgコマンド →●[マニュアル]
接続関連→●[マニュアル]
【参考記事】
−
■1■ ソース例
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ソースの拡張子(推奨)は 「.pgc」
【□】 以下を test.pgc として作成
#include
EXEC SQL BEGIN DECLARE SECTION;
char dbname[1024];
char tmpstr[1024];
EXEC SQL END DECLARE SECTION;
int
main()
{
EXEC SQL CONNECT TO postgres USER postgres;
EXEC SQL SELECT current_database() INTO :dbname;
printf("current_database=%s \n", dbname);
EXEC SQL select cast(current_timestamp as varchar) INTO :tmpstr;
printf("current_timestamp=%s \n", tmpstr);
EXEC SQL DISCONNECT;
return 0;
}
■2■ コンパイル
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【□】 ecpg test1.pgc
【□】 cc -I/usr/local/pgsql/include -c test1.c
【□】 cc -o test1 test1.o -L/usr/local/pgsql/lib -lecpg
【□】 ls -l test1*
[postgres@kvm00 ecpg]$ ls -l test1*
-rwxrwxr-x 1 postgres postgres 9051 9月 8 23:37 2012 test1
-rw-rw-r-- 1 postgres postgres 1216 9月 8 23:37 2012 test1.c
-rw-rw-r-- 1 postgres postgres 2568 9月 8 23:37 2012 test1.o
-rw-rw-r-- 1 postgres postgres 461 9月 8 23:37 2012 test1.pgc
【参考】
-I/usr/local/pgsql/include
コンパイルする際、PostgreSQLのインクルードディレクトリ内にあるECPGヘッダファイルを検索できるようにする。
-L/usr/local/pgsql/lib -lecpg リンカオプション
libecpgライブラリをリンクする。
上記の各ディレクトリは環境により異なるのでpg_configコマンドで確認
【参考】NULLの使用関連(詳細確認必要)
-r option
実行時の動作を選択します。以下のいずれかをoptionとして取ることができます。
no_indicator
指示子を使用せずにNULL値を表す特殊な値を使用します。歴史的にこの方式を使用したデータベースが存在します。
こちらも参照
http://www.postgresql.jp/document/9.1/html/ecpg-variables.html
■3■ 実行
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【□】 ./test1
current_database=postgres
current_timestamp=2012-09-08 23:42:29.308352+09
以上