メインコンテンツへ
データベースカーソル操作

SQL のカーソルを使って複数行の結果を1行ずつ処理する際、SQL 文の正しい実行順序はどれか。

ア.OPEN → DECLARE → FETCH → CLOSE
イ.FETCH → DECLARE → OPEN → CLOSE
ウ.DECLARE → OPEN → FETCH → CLOSE正解
エ.DECLARE → FETCH → OPEN → CLOSE

解説

カーソル操作は「図書館での本の借り出し」のようなもの。まず「この本を借りたい」と申請書を書く(DECLARE)。受付で本棚から取り出してもらう(OPEN)。1冊ずつ手元に持ってくる(FETCH)。読み終わったら返却する(CLOSE)。この順序を守らないと借りられない。

なぜ ウ が正解か

カーソル操作の正しい順序: ①DECLARE CURSOR: カーソルに SELECT 文を定義(まだ実行されない) ②OPEN CURSOR: SELECT 文を実行し結果セットを生成、カーソルを先頭前に位置付け ③FETCH: カーソルを次の行に移動し、その行のデータを変数に取得(繰り返し実行) ④CLOSE CURSOR: カーソルを閉じ、結果セットのリソースを解放 (必要に応じて DEALLOCATE でカーソルの定義自体を削除する場合もある)

なぜ ア は間違いか

OPEN が DECLARE より前に来ている。定義されていないカーソルを OPEN することはできない。操作の前提条件を無視した誤り。

なぜ イ は間違いか

FETCH が最初に来ている。カーソルを定義・開いていない状態でデータを取得することはできない。準備前に実行しようとした誤り。

なぜ エ は間違いか

FETCH が OPEN より前に来ている。カーソルを開く(OPEN)前にデータ取得(FETCH)はできない。OPENとFETCHの順序を逆にした誤り。

出典: AI生成問題(学習用)