平成26年度 春期 データベーススペシャリスト試験 午前Ⅱ 問7
テクノロジ/データベース次のSQL文は,A表に対するカーソルBのデータ操作である。aに入れるべき適切な字句はどれか。 UPDATE A SET A2 = 1, A3 = 2 WHERE [ a ] ここで,A表の構造は次のとおりであり,下線は主キーを表す。 A(A1,A2,A3) ※A1が主キー
出典:平成26年度 春期 データベーススペシャリスト試験 午前Ⅱ 問7
- アCURRENT OF A1
- イCURRENT OF B
- ウCURSOR B OF A
- エCURSOR B OF A1
正解:イ
解説
カーソルを用いた埋込み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 <カーソル名>」を用いる必要がある。