埋め込み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)