埋め込みSQLとカーソルとは?うめこみえすきゅーえるとかーそる
埋め込みSQLとカーソルとは、COBOLやCのような手続き型言語のプログラムへ直接SQL文を記述する方式が埋込みSQL。集合を返すSQLと1行ずつ処理するプログラムの隔たり(インピーダンスミスマッチ)を埋めるのがカーソルで、DECLAREで宣言し、OPEN・FETCH・CLOSEで結果を1行ずつ受け取る。
最終更新:2026-10-06
情報処理安全確保支援士を最短で暗記・合格する →背景
関係データベースは集合単位で結果を返すのに対し、プログラムの制御構造は1件ずつの繰返しでできている。この不整合を埋める仕掛けがなければ両者を接続できず、標準SQLにカーソル操作が定められた。支援士にとって重要なのはこの延長にある動的SQLで、実行時に文字列を組み立てる方式がSQLインジェクションの温床になる点が、セキュアプログラミングの出発点になる。
具体例
単一行しか返らない検索はSELECT INTOで変数へ受け取り、複数行が返る検索はカーソルで順に取り出す。安全な実装では値を文字列連結せず、プレースホルダで渡すプリペアドステートメントを用い、SQL文の構造を実行前に確定させる。
試験での引っ掛け
SQLで書ける集計をプログラム側のループで書くと、行ごとの往復が発生して性能が落ちる(N+1問題)。複数行が返りうるのにSELECT INTOで受ければ実行時エラーになり、カーソルを開いたまま長時間保持すればロックと資源を占有する。静的SQLはコンパイル時に文が確定し動的SQLは実行時に組み立てる点、その動的SQLでもプレースホルダを使えばインジェクションを防げる点を取り違えない。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。