データベーススペシャリスト試験 2018年 午前206


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

解説

SQLのUPDATE文におけるカーソルのCURRENT OF句【午前2 解説】

要点まとめ

  • 結論:UPDATE文のWHERE句でカーソルの現在行を指定するには「CURRENT OF カーソル名」を使います。
  • 根拠:SQL標準では、カーソルの現在位置を参照するために「CURRENT OF カーソル名」という句が用いられます。
  • 差がつくポイント:主キー名ではなく、カーソル名を正確に指定することが重要で、誤って主キー名やカーソル宣言文を入れないことです。

正解の理由

UPDATE文のWHERE句に入れるべき字句は「CURRENT OF B」です。
これは、カーソルBが指している現在の行を特定し、その行に対して更新を行うための標準的な書き方です。
「CURRENT OF B」とすることで、カーソルBが現在位置している行の主キーを自動的に参照し、正確に更新対象を絞れます。

よくある誤解

「CURRENT OF」の後には主キー名やカーソルの宣言文を入れると思い込みがちですが、正しくはカーソル名のみを指定します。

解法ステップ

  1. 問題文のUPDATE文のWHERE句に入る字句を考える。
  2. カーソルBがA表の行を指していることを確認。
  3. SQLのカーソル操作で現在行を指定する句は「CURRENT OF カーソル名」であることを思い出す。
  4. 選択肢の中から「CURRENT OF B」を選択する。

選択肢別の誤答解説ステップ

  • ア: CURRENT OF A1
    → A1は主キー列名であり、カーソル名ではないため誤り。
  • イ: CURRENT OF B
    → 正解。カーソルBの現在行を指定する正しい書き方。
  • ウ: CURSOR B OF A
    → これはカーソル宣言の文法であり、WHERE句に入れる字句としては不適切。
  • エ: CURSOR B OF A1
    → 同様にカーソル宣言の文法で誤り。A1は列名でありカーソル宣言に使わない。

補足コラム

SQLのカーソル操作では、UPDATEやDELETE文でカーソルの現在行を対象にする場合、WHERE句に「CURRENT OF カーソル名」を指定します。
これにより、カーソルが指している行を正確に更新・削除でき、主キーを直接指定する必要がなくなります。

FAQ

Q: なぜ主キー名をWHERE句に直接書かないのですか?
A: 主キー名だけではどの行を更新するか特定できないため、カーソルの現在位置を示す「CURRENT OF カーソル名」を使います。
Q: 「CURRENT OF カーソル名」はどんな場面で使いますか?
A: カーソルでフェッチした行をUPDATEやDELETEで操作するときに使い、現在のカーソル位置を指定します。

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

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