IPA過去問ドリル

平成26年度 春期 データベーススペシャリスト試験 午前Ⅱ 問7

テクノロジ/データベース

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

出典:平成26年度 春期 データベーススペシャリスト試験 午前Ⅱ 問7

正解:イ

解説

カーソルを用いた埋込みSQLでは,カーソルで現在指している行に対して更新・削除を行う場合,UPDATE文やDELETE文のWHERE句に「WHERE CURRENT OF <カーソル名>」という構文を指定する。これにより,条件式で行を特定するのではなく,カーソルが現在位置している行そのものを更新・削除の対象にできる。設問のカーソル名はBであるため,aには「CURRENT OF B」が入る。

選択肢ごとの解説

  • 誤り。CURRENT OFの後には,カーソル名(設問ではB)を指定する必要があり,列名であるA1を指定するのは構文として誤りである。
  • 正しい。「WHERE CURRENT OF B」とすることで,カーソルBが現在指している行を更新対象として指定できる。
  • 誤り。「CURSOR B OF A」という構文はSQLの標準的なカーソル位置決め構文ではない。カーソルを用いた更新には「CURRENT OF <カーソル名>」という構文を用いる。
  • 誤り。「CURSOR B OF A1」もSQLの標準的な構文ではなく,カーソルの現在行を指定するには「CURRENT OF <カーソル名>」を用いる必要がある。
データベーススペシャリストの過去問を演習モードで解く