埋め込みSQL

埋め込みSQL(Embedded SQL)とは、C/C++COBOL、FORTRAN、PascalAdaJavaなどの手続き型プログラミング言語に、関係データベース(RDBMS)を操作するためのSQLを組み込む技術です。これにより、プログラマーはソースコードの中に直接SQLステートメントを記述できるようになります。この手法は「組み込みSQL」とも呼ばれます。

埋め込みSQLの歴史は古く、SQL標準規格であるSQL86(1986年)ではCOBOL、FORTRAN、PL/Iへの埋め込みSQL文の仕様が、SQL89(1989年)ではC言語への埋め込みSQL文の仕様がそれぞれ策定されました。

埋め込みSQLステートメントは、コンパイル実行前にSQLプリプロセッサによって前処理されます。これにより、SQL文がそれぞれの言語のコードとして解釈され、データベース操作がプログラムの一部として実行できるようになります。

Oracleデータベースにおいては、埋め込みSQLプリプロセッサとしてProC/C++が広く使われています。その他にも、ProCOBOL、ProFORTRAN、ProPascalSQLModuleなどが存在します。また、SybaseやPostgreSQL(ECPG)もC言語への埋め込みをサポートしています。

以下に、各データベースと対応言語のサポート状況をまとめます。

Oracle Database



Ada: ProAdaのサポートはOracle 7.3で終了し、Oracle 8以降はSQLModuleに置き換えられました。ただし、SQLModuleは更新されていません。SQLModuleでは、埋め込みSQLとしてモジュール言語を用いた異なるプログラミング方式を採用しています。SQLModuleはAda83をサポートします。
C/C++: ProCはOracle 8からProC/C++となりました。ProC/C++はOracle Database 21cでサポートされています。
COBOL: ProCOBOLはOracle Database 21cでサポートされています。
Fortran: ProFORTRANはOracle 8以降更新されていませんが、バグ修正は継続して行われています。
Pascal: ProPascalはOracle 8以降更新されていません。
PL/I: ProPL/IはOracle 8以降更新されていませんが、ドキュメントには記載があります。

PostgreSQL



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)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。