埋め込み
SQL(Embedded
SQL)とは、C/
C++、
COBOL、FORTRAN、
Pascal、
Ada、
Javaなどの
手続き型プログラミング言語に、
関係データベース(RDBMS)を操作するための
SQLを組み込む技術です。これにより、プログラマーはソースコードの中に直接
SQLステートメントを記述できるようになります。この手法は「組み込み
SQL」とも呼ばれます。
埋め込み
SQLの歴史は古く、
SQL標準規格である
SQL86(
1986年)では
COBOL、FORTRAN、PL/Iへの埋め込み
SQL文の仕様が、
SQL89(
1989年)では
C言語への埋め込み
SQL文の仕様がそれぞれ策定されました。
埋め込み
SQLステートメントは、コンパイル実行前に
SQLプリプロセッサによって前処理されます。これにより、
SQL文がそれぞれの言語のコードとして解釈され、データベース操作がプログラムの一部として実行できるようになります。
Oracleデータベースにおいては、埋め込み
SQLの
プリプロセッサとしてPro
C/C++が広く使われています。その他にも、ProCOBOL、Pro
FORTRAN、ProPascal、
SQLModuleなどが存在します。また、SybaseやPostgreSQL(ECPG)もC言語への埋め込みをサポートしています。
以下に、各データベースと対応言語のサポート状況をまとめます。
Oracle Database
Ada: Pro
AdaのサポートはOracle 7.3で終了し、Oracle 8以降はSQLModuleに置き換えられました。ただし、
SQLModuleは更新されていません。SQLModuleでは、埋め込み
SQLとしてモジュール言語を用いた異なるプログラミング方式を採用しています。
SQLModuleはAda83をサポートします。
C/C++: Pro
CはOracle 8からProC/
C++となりました。Pro
C/C++はOracle Database 21cでサポートされています。
COBOL: Pro
COBOLはOracle Database 21cでサポートされています。
Fortran: Pro
FORTRANはOracle 8以降更新されていませんが、バグ修正は継続して行われています。
Pascal: Pro
PascalはOracle 8以降更新されていません。
PL/I: Pro
PL/IはOracle 8以降更新されていませんが、ドキュメントには記載があります。
C/C++: ECPGとして
PostgreSQL 6.3以降でサポートされています。
C++のサポートは限定的であり、正常に処理できない構文が存在します。
埋め込み
SQLは、データベースにアクセスするアプリケーション開発において、柔軟かつ効率的な手法を提供します。特に、複雑なデータベース操作をプログラム内で直接記述できる点は、開発効率を大きく向上させます。しかし、
プリプロセッサの利用や、対応する言語の知識が必要となるため、利用には一定の学習コストがかかることも考慮すべき点です。
埋め込み
SQLを利用することで、アプリケーションとデータベースを密接に連携させ、高度なデータ処理を実現できます。各データベース製品が提供する
プリプロセッサや、言語ごとのサポート状況を理解し、適切な開発手法を選択することが重要です。
参考文献
Introduction to ProC Embedded
SQL
Embedded SQL with ProC
SQLModule for
Ada Programmer's Guide, Release 8.0
* ECPG -
C言語による埋め込み
SQL (
PostgreSQL)