埋め込みSQL

埋め込みSQL（うめこみ-、）は、C/C++、COBOL、FORTRAN、Pascal、Ada、Java (SQLJ) といった手続き型プログラミングに、関係データベース(RDBMS)を操作するためのSQLを組み込む手法であり、プログラマはソースコード内部に埋め込みSQLステートメントを直接記述することができるようになる。「組み込みSQL」とも呼ばれる。

SQL標準規格のSQL86(1986年)において、COBOL、FORTRAN、PL/Iなどへの埋め込みSQL文の仕様、SQL89(1989年)において、C言語への埋め込みSQL文の仕様がそれぞれ策定された。

埋め込みSQLステートメントはコンパイル実行前にSQLプリプロセッサによって前処理される。

Oracleデータベースに対する埋め込みSQLのプリプロセッサとしてPro*C/C++が普及しているが、他に、Pro*COBOL、Pro*FORTRAN、Pro*Pascal、SQL*Module などがある。他データベース製品では Sybase や PostgreSQL (ECPG) がC言語への埋め込みをサポートしている。

サポートするデータベース

Oracle Database 

 Ada  Pro*Ada のサポートは Oracle 7.3 で打ち切られ、Oracle 8 以降は SQL*Module で置き換えられた。しかしそれ以降更新されていない。 SQL*Module では埋め込みSQLとして異なるプログラミング方式をモジュール言語として用いる。SQL*Module は Ada83 をサポートする。
 C/C++  Pro*C は Oracle 8 より Pro*C/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 以降更新されていないが、ドキュメントには記載されている。

PostgreSQL 

 C/C++
 ECPG として PostgreSQL 6.3 以降でサポートされている。C++ のサポートは限定的で、正常に処理できない構文が存在する。

参考文献

外部リンク 
 Introduction to Pro*C Embedded SQL
 Embedded SQL with Pro*C
 SQL*Module for Ada Programmer's Guide, Release 8.0
 ECPG - C言語による埋め込みSQL (PostgreSQL)

SQL
問い合わせ言語