データベーススペシャリスト試験 2014年 午前207


次の SQL 文は, A 表に対するカーソルBのデータ操作である。(a) に入れるべき適切な字句はどれか。
UPDATE A SET A2 = 1, A3 = 2 WHERE (a)
ここで, A表の構造は次のとおりであり, 下線は主キーを表す。
A(<u>A1</u>, A2, A3)
CURRENT OF A1
CURRENT OF B(正解)
CURSOR B OF A
CURSOR B OF A1

解説

SQLのカーソル操作に関する問題【午前2 解説】

要点まとめ

  • 結論:UPDATE文のWHERE句にカーソルの現在位置を指定する場合は「CURRENT OF カーソル名」を使います。
  • 根拠:SQL標準で、カーソルが指す行を更新する際は「WHERE CURRENT OF カーソル名」が正しい構文です。
  • 差がつくポイント:カーソル名を正しく指定し、主キー名やカーソル宣言文をWHERE句に誤って使わないことが重要です。

正解の理由

SQL文でカーソルBが指す現在の行を更新するには、WHERE句に「CURRENT OF B」と記述します。
これは「カーソルBが現在指している行を対象に更新する」という意味で、主キー名やカーソル宣言文はWHERE句に直接使えません。
したがって、選択肢イの「CURRENT OF B」が正解です。

よくある誤解

「CURRENT OF」の後に主キー名やテーブル名を入れる誤りが多いです。カーソル名を指定するのが正しい使い方です。

解法ステップ

  1. 問題文のSQL文の目的を確認する(カーソルBの現在行を更新)。
  2. WHERE句にカーソルの現在行を指定する構文を思い出す。
  3. 「WHERE CURRENT OF カーソル名」が正しいことを理解する。
  4. 選択肢の中から「CURRENT OF B」を選ぶ。

選択肢別の誤答解説

  • ア: CURRENT OF A1
    → A1は主キー列名であり、カーソル名ではないため誤り。
  • イ: CURRENT OF B
    → カーソルBの現在行を指定する正しい構文。
  • ウ: CURSOR B OF A
    → これはカーソル宣言の文法であり、WHERE句に使えない。
  • エ: CURSOR B OF A1
    → 同様にカーソル宣言の文法で誤り。

補足コラム

SQLのカーソルは、複数行の結果セットを1行ずつ処理するために使います。
「CURRENT OF カーソル名」は、カーソルが現在指している行を特定し、その行に対してUPDATEやDELETEを行う際に使う重要な構文です。
主キー名やテーブル名を直接WHERE句に使うのは、カーソル操作とは異なる更新方法です。

FAQ

Q: カーソル名はどのように決めるのですか?
A: カーソル名はSQL文内で宣言時に任意に付けます。問題文では「B」がカーソル名です。
Q: 「CURRENT OF」はどんな場面で使いますか?
A: カーソルが指す現在の行をUPDATEやDELETEで操作するときに使います。

関連キーワード: SQL, カーソル, UPDATE文, CURRENT OF, 主キー, データベース操作
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ