埋め込みSQLとカーソルとは?うめこみえすきゅーえるとかーそる
埋め込みSQLとカーソルとは、手続き型言語のソースの中に直接SQL文を書く方式が埋め込みSQL。SQLが結果を集合(表)で返すのに対しCなどのプログラムは1行ずつしか扱えず、この食い違い(インピーダンスミスマッチ)を埋めるのがカーソルで、OPEN・FETCH・CLOSEで結果表を1行ずつ手前へ取り出す。
最終更新:2026-10-06
エンベデッドSPを最短で暗記・合格する →背景
問合せの結果という集合を、変数とループしか持たない言語の世界へ持ち込む必要がある。カーソルは結果表に対する読み出し位置を1つ持たせ、FETCHのたびに1行進める仕掛けで、受信FIFOから1要素ずつ引き抜く構造にあたる。あわせて、事前にコンパイルして構文と権限とアクセス経路を確定させる静的SQLと、実行時に文字列で組み立てる動的SQLの違いも、この方式に付随する論点として問われる。
具体例
機器から集めた測定値を日次で集計する処理で、全行をFETCHしてアプリ側で合計していたところを、SQLのGROUP BYで装置別・日別に集計してからカーソルで受け取る形へ変えた。データベースとの往復回数と取り出す行数が桁で減り、処理時間が5分の1になった。
試験での引っ掛け
SQL1文で書ける処理をプログラムのループで書くのは典型的な性能劣化(N+1問題)。単一行しか返らないSELECTにカーソルは不要でSELECT INTOで受け、逆に複数行が返りうるのにカーソルを使わないと実行時エラーになる。開いたまま抱えればロックと資源を占有し続け、動的SQLの文字列連結はSQLインジェクションの入口になる。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。