カーソルとは?カーソル
カーソルとは、問合せの結果として得られた行の集合から、1行ずつ順に取り出して処理するための仕組み。集合をまとめて扱うSQLと、1件ずつ順に処理する手続き型言語との食い違い(インピーダンスミスマッチ)を埋める。ISO/IEC 9075ではDECLAREで宣言し、OPEN→FETCH→CLOSEの順に使うと定められている。
最終更新:2026-10-06
エンベデッドSPを最短で暗記・合格する →背景
SQLは「条件に合う行すべて」を一度に返す言語で、返るのは表の形をした集合になる。ところが呼び出す側のC言語やJavaは、変数へ1件ずつ受け取って処理する構造しか持たない。この段差を埋めるために用意されたのがカーソルで、組込み技術者から見れば、配列全体を返す関数と、ストリームから1要素ずつ読み出すイテレータの関係にあたる。ただし取り出すたびにDBMSと往復するので、集合のまま1文で書けるならそのほうが速い、という判断は常に付いて回る。
具体例
未処理の受注行を1件ずつ取り出して伝票番号を採番する処理では、DECLARE CURSOR で問合せを宣言し、OPEN したあと FETCH を繰り返し、行が尽きたら CLOSE する。カーソルが指している行そのものを更新するときは UPDATE … WHERE CURRENT OF カーソル名 と書き、主キーで引き直す書き方とは区別する。
試験での引っ掛け
1行ずつ往復する仕組みなので、集合のまま1文で書ける処理をカーソルのループへ置き換えると性能が大きく落ちる——「手続き型に見えて分かりやすい」を理由に選ぶのは誤り。位置付け更新の構文は WHERE CURRENT OF カーソル名 で、WHERE 主キー=… とは意味が違う。OPENしたまま閉じ忘れると資源を占有し続ける点も出題される。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。