第 30章ECPG - C言語による埋め込みSQL

目次
30.1. 概念
30.2. データベースサーバへの接続
30.3. 接続を閉じる
30.4. SQL コマンドの実行
30.5. 接続の選択
30.6. ホスト変数の使用
30.6.1. 概要
30.6.2. 宣言セクション
30.6.3. SELECT INTOFETCH INTO
30.6.4. 指示子
30.7. 動的 SQL
30.8. SQL記述子領域の使用
30.9. エラーの扱い
30.9.1. コールバックの設定
30.9.2. sqlca
30.9.3. SQLSTATESQLCODE
30.10. インクルードファイル
30.11. 埋め込みSQLプログラムの処理
30.12. ライブラリ関数
30.13. 内部

本章では、PostgreSQL の埋め込み SQL パッケージについて説明します。 埋め込みSQLはCC++によって動作します。 Linus Tolke()と Michael Meskes()によって書かれました。

この文書は完全なものではありません。 しかし、このインタフェースは標準化されており、SQL に関するその他の資料でも情報を入手することもできます。

30.1. 概念

埋め込み SQL プログラムは通常のプログラミング言語(ここでは C)で記述されたコードで、特別にマークされたセクション内のSQLコマンドとともに使用されます。 このプログラムを構築するには、まずソースコードを埋め込み SQL プリプロセッサに渡します。 ソースコードは、プリプロセッサによって通常の C プログラムに変換され、その後 C コンパイルツールチェーンによって処理されます。

C コードから SQL コマンドを扱う場合は、埋め込み SQL の方が他の手法よりも有効です。 まず、埋め込み SQL は C プログラムの変数との面倒な情報移動を処理してくれます。 更に、プログラム内のSQLコードは構築時に正確な構文になっているかどうか検査されます。 また、C 言語での埋め込みSQLは標準SQL で既に定義されており、他のさまざまな SQLデータベースシステムでサポートされています。 PostgreSQLの実装は可能な限りこの標準に準拠するよう設計されています。 また通常の場合、他のSQLデータベース用に作成された埋め込み SQL プログラムを比較的簡単に PostgreSQL へ移植することができます。

先に述べたとおり、埋め込みSQLインタフェース用のプログラムは、通常の C プログラムに、データベース関連処理を行うための特別なコードを加えたものです。 特別のコードは、常に、次のような形式になっています。

EXEC SQL ...;

この文は、構文上でC言語の文の置き換えとなります。 文によっては、グローバルコンテキスト、または関数内に現れることもあります。 埋め込みSQL文における大文字小文字の区別の有無は、C コードではなく、通常の SQLコードの規則に従います。

以下の節で、すべての埋め込み SQL 文について説明します。