読み方 : うめこみエスキューエル
埋め込みSQL【embedded SQL】
概要

一般にデータベース操作には、利用者が対話的にデータベース管理システムにSQL文を与えて実行する方法と、プログラムから機能を呼び出す方法がある。埋め込みSQLでは、プログラムのソースコード中にSELECT文やINSERT文などのSQL文を記述し、専用のプリプロセッサやコンパイラ拡張機能によってデータベースアクセス用の呼び出しコードに変換する。
この手法では、プログラム中の変数とSQL文内のホスト変数を関連付けることで、検索結果の受け取りや更新値の受け渡しを行う。データ型の整合性をコンパイル時に検査でき、静的に記述されたSQL文により実行計画を事前に最適化しやすい。
一方、SQL文がソースコード内に固定的に書き込まれるため、仕様変更時にはソースコードの修正と再コンパイルが必要となる。また、文字列連結によって動的にSQL文を生成する場合には、入力値の検証が不十分だとSQLインジェクションの原因となることがある。プレースホルダを用いたバインド変数の利用や、入力値の妥当性確認が必要となる。
近年は、JDBCやODBCのようなAPIを介してSQL文を渡す方式や、O/Rマッパーを用いる方式も広く利用されているが、プログラムとデータベースを密接に結びつける埋め込みSQLは高い性能と制御性を求める業務システムや基幹系システムにおいて現在も重要な方式の一つとなっている。
関連用語
資格試験などの「埋め込みSQL」の出題履歴
▼ 基本情報技術者試験
【令6修6 問20】 埋込みSQLにおいて,問合せによって得られた導出表を1行ずつ親プログラムに引き渡す操作がある。この操作と関係の深い字句はどれか。
【令5修6 問20】 埋込みSQLにおいて,問合せによって得られた導出表を1行ずつ親プログラムに引き渡す操作がある。この操作と関係の深い字句はどれか。
【令4修1 問26】 埋込みSQLにおいて,問合せによって得られた導出表を1行ずつ親プログラムに引き渡す操作がある。この操作と関係の深い字句はどれか。
【平30春 問28】 次の埋込みSQLを用いたプログラムの一部において,Xは何を表す名前か。EXEC SQL OPEN X; EXEC SQL FETCH X INTO :NAME,:DEPT,:SALARY; EXEC SQL UPDATE 従業員 SET 給与 = 給与 * 1.1 WHERE CURRENT OF X;EXEC SQL CLOSE X;。