平成30年度 春期 午前Ⅱ 問6
データ操作
カーソルに関する問題
次のSQL文は,A表に対するカーソルBのデータ操作である。aに入れる字句はどれか。
UPDATE A SET A2 = 1, A3 = 2 WHERE [ a ]
ここで,A表の構造は次のとおりであり,実線の下線は主キーを表す。
A(A1,A2,A3)
- アCURRENT OF A1
- イCURRENT OF B
- ウCURSOR B OF A
- エCURSOR B OF A1
答えと解説を見る
✓ これが正解イCURRENT OF B
解説
カーソルが指す行の更新は、CURRENT OF の後にカーソル名を書きます。
見分ける軸は、カーソルを使った更新で、WHERE句に何の名前を書くかです。カーソルは、問合せの結果の行を1行ずつ取り出して処理するための仕組みで、取り出した位置の行を指しています。その行をそのまま更新するときは、WHERE CURRENT OF の後にカーソルの名前を書きます。設問のカーソルの名前はBなので、WHERE CURRENT OF Bとなり、カーソルBが今指しているA表の行のA2とA3が書き換わります。CURRENT OFの後には、列名でも表名でもなくカーソル名が来る、と押さえておくと、似た並びの字句を見分けられます。
ほかの選択肢はなぜ違うのか
- アCURRENT OF A1:CURRENT OFの後には、カーソルの名前を書きます。A1はA表の主キーの列の名前であり、カーソルではないので、どの行を指しているかを示すことができません。
- ウCURSOR B OF A:CURSOR B OF Aという並びは、カーソルが指す行を更新の対象にするWHERE句の書き方ではありません。カーソルの位置を使うには、CURRENT OF の後にカーソル名を続けて書きます。
- エCURSOR B OF A1:CURSOR B OF A1という並びも、WHERE句でカーソル位置の行を示す書き方ではありません。加えてA1は列の名前なので、カーソルが今指している行を表すことにはなりません。
出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問6
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)