平成27年度 春期 午前 問27
データベース
導出表に関する問題
埋込み SQL において,問合せによって得られた導出表を 1 行ずつ親プログラムに引き渡す操作がある。この操作と関係の深い字句はどれか。
- アCURSOR
- イORDER BY
- ウUNION
- エUNIQUE
答えと解説を見る
✓ これが正解アCURSOR
解説
表を1行ずつ取り出して、プログラムへ渡す仕組みです。
設問は、埋込みSQLで導出表を1行ずつ親プログラムに引き渡す操作と関係の深い字句を選ばせています。鍵になるのは、設問が述べている1行ずつという言葉です。問合せが返すのは表であり、何行になるかは実行してみるまで決まりません。一方で、COBOLのような親プログラムの変数は、一度に1行分しか受け取れません。ここに段差がありますから、結果の表のどの行を指しているかを覚えておく仕組みが必要です。それがCURSORです。使い方は四つの命令が対になっていて、まずどの問合せの結果を指すかを宣言し、次に開いて結果の表を用意し、そのうえで指し位置を一つ進めてその行を変数へ渡す操作を繰り返し、最後に閉じます。設問が述べている操作はこの取り出しの部分にあたり、その土台となる字句が答えになります。決め手になる問いは、SQLの外へ出ていく話をしているのはどれかということです。
ほかの選択肢はなぜ違うのか
- イORDER BY:結果として得られた表の並び順を決める字句です。順に取り出すという言い方に引かれやすいところですが、並べ替えることと、外にある変数へ一行分を渡すこととは別の話になります。
- ウUNION:二つの結果の表を縦に足し合わせて一つにまとめる字句です。まとまった表の行数は増えますが、その表を親プログラムへどのように渡すかについては何も述べていません。
- エUNIQUE:同じ値が重複することを許さないと指定する制約の字句です。表の中でどのような値を持てるかという話に留まっていて、外にあるプログラムとの受け渡しには関わりません。
出典:平成27年度 春期 応用情報技術者試験 午前 問27
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)