SQL SELECT文を使用したデータの取得、制限およびソート11 / 50 問

SQL*Plusで次の2つのSQL文を続けて実行し、最初に表示されたプロンプトでsalaryと入力しました。2つのSQL文の実行中に、値の入力を求めるプロンプトは合計で何回表示されますか。

SELECT employee_id, &&col_name FROM employees WHERE &col_name > 5000;

SELECT employee_id, &col_name FROM employees ORDER BY &col_name;
A1回✓
B2回
C3回
D4回
正解:A解説

&&を付けた置換変数は、入力された値を変数として定義(DEFINE)します。定義された変数は、その後の&による参照でもプロンプトを表示せずに同じ値が使われます。
今回は1つ目のSQL文の&&col_nameで1回だけプロンプトが表示され、col_nameにsalaryが定義されます。以降の3か所の&col_nameはすべてsalaryに置き換えられるため、プロンプトは合計1回です。
&と&&の違い

記述動作
&変数名変数が未定義なら、出現するたびにプロンプトを表示する
&&変数名プロンプトで入力した値を定義し、以降は再利用する

**関連するSQL*Plusコマンド**

コマンド役割
DEFINE 変数名 = 値置換変数を事前に定義する
DEFINE 変数名定義済みの値を表示する
UNDEFINE 変数名定義を削除する(次回の&で再びプロンプトが出る)
SET VERIFY ON/OFF置換前(old)と置換後(new)の表示を切り替える

&&を使わずにすべて&で記述していた場合は、出現するたびにプロンプトが表示されるため4回になります。

前後の問題