平成25年度 春期 午前Ⅱ 問8
データ操作
SQLで用いるカーソルの説明
SQL で用いるカーソルの説明のうち,適切なものはどれか。
- アCOBOL,C などの親言語内では使用できない。
- イ埋込み型 SQL において使用し,会話型 SQL では使用できない。
- ウカーソルは検索用にだけ使用可能で,更新用には使用できない。
- エ検索処理の結果集合が単一行となる場合の機能で,複数行の結果集合は処理できない。
答えと解説を見る
✓ これが正解イ埋込み型 SQL において使用し,会話型 SQL では使用できない。
解説
カーソルは埋込みSQLで使い、会話型SQLでは使いません。
カーソルは、問合せの結果が複数行になるとき、その行を1行ずつ取り出して親言語のプログラムに渡すための仕組みです。COBOL や C のプログラムの変数は一度に1行分の値しか受け取れないので、埋込みSQL ではカーソルを宣言し、OPEN、FETCH、CLOSE の順で1行ずつ処理します。一方、会話型SQL では利用者が文を入力すると結果の表がまとめて表示されるので、1行ずつ受け渡す必要がありません。カーソルは、表の形の結果とプログラムの1行ずつの処理との間をつなぐ役目だと押さえると、使う場面が見えてきます。
ほかの選択肢はなぜ違うのか
- アCOBOL,C などの親言語内では使用で…:カーソルは、COBOL や C などの親言語に SQL を埋め込んで使う場面のための仕組みです。親言語内では使用できないという記述は、カーソルが用意された目的と正反対になっています。
- ウカーソルは検索用にだけ使用可能で,更新用…:カーソルが指している行は、UPDATE や DELETE の WHERE CURRENT OF で更新や削除の対象にできます。検索だけに使えるという記述は誤りで、取り出した行をその場で更新する用途にも使えます。
- エ検索処理の結果集合が単一行となる場合の機…:結果が1行だけなら、カーソルを使わずに SELECT INTO で変数へ直接受け取れます。カーソルはむしろ結果が複数行になるときに、それを1行ずつ処理するために使うものです。
出典:平成25年度 春期 データベーススペシャリスト試験 午前Ⅱ 問8
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)