読み方 : うめこみエスキューエル

埋め込みSQL【embedded SQL】

概要

埋め込みSQLとは、C言語やJavaなどの汎用プログラミング言語ソースコード内にSQL文を直接記述し、プログラムからデータベースを操作する方式。アプリケーションとデータベースを密接に連携させるための代表的な手法の一つである。
埋め込みSQLのイメージ画像

一般にデータベース操作には、利用者が対話的データベース管理システムSQL文を与えて実行する方法と、プログラムから機能を呼び出す方法がある。埋め込みSQLでは、プログラムソースコード中にSELECT文INSERT文などのSQL文を記述し、専用のプリプロセッサコンパイラ拡張機能によってデータベースアクセス用の呼び出しコードに変換する。

この手法では、プログラム中の変数とSQL文内のホスト変数を関連付けることで、検索結果の受け取りや更新値の受け渡しを行う。データ型の整合性をコンパイル時に検査でき、静的に記述されたSQL文により実行計画を事前に最適化しやすい。

一方、SQL文ソースコード内に固定的に書き込まれるため、仕様変更時にはソースコードの修正と再コンパイルが必要となる。また、文字列連結によって動的にSQL文を生成する場合には、入力値の検証が不十分だとSQLインジェクションの原因となることがある。プレースホルダを用いたバインド変数の利用や、入力値の妥当性確認が必要となる。

近年は、JDBCODBCのような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;。
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。