ACCEPT CLPPlus コマンド
ACCEPT CLPPlus コマンドは、指定された名前の変数を作成します。 その変数には、CLPPlus インターフェースの中で、または実行されるスクリプトの一部として読み取られるパラメーターを介して、対話式に値を代入できます。 ACCEPT コマンドは、SQL ステートメントまたは SQL バッファーでよく利用される値を保管するのに役立ちます。
デフォルトで、コマンドの出力は CLPPlus インターフェースの標準出力に表示されます。
呼び出し
このコマンドは、CLPPlus インターフェースから、または CLPPlus スクリプト・ファイルの中から実行する必要があります。
許可
なし
必要な接続
なし
コマンド構文
コマンド・パラメーター
- variable-name
- 変数名を定義します。 スラッシュ (/) またはアットマーク (@) などの特殊記号および特殊文字は使用できません。
ACCEPT コマンドを発行すると、variable-name の値を入力するようプロンプトが表示されます。
- FORMAT format-string
- 変数に割り当てられる書式を定義します。 変数に割り当てようとする値は、指定された書式に従わなければなりません。
文字変数の場合、format-string の値は
Anです。ここで、n は、変数の表示に使用できる文字の数を指定します。 指定された幅より大きい場合、データは折り返されます。数値変数の場合、format-string の値は以下の 1 つ以上の文字になります。
- $
- 先行ドル記号を表示します。
- ,
- 指定された位置にコンマを表示します。
- .
- 指定された位置に小数点を表示します。
- 0
- 指定された位置にゼロを表示します。
- 9
- 指定された位置に有効数字を表示します。
- DEFAULT default-value
- ユーザーが入力を要求されたときに値を入力せずに ENTER キーを押したときに、このオプションで定義されたデフォルト値が変数に割り当てられます。
- PROMPT text
- ACCEPT コマンドが入力されたときに、このオプションで定義された値がプロンプトに表示されます。
- HIDE
- HIDE を指定すると、ユーザーが入力した値はコンソールにエコー出力されません。
例
以下の例では、ACCEPT コマンドは my_name という変数を作成し、値を入力するようプロンプトを表示します。 値 John Smith はこの変数に保管されます。 DEFINE コマンドはこの変数の値を表示します。
SQL> ACCEPT my_name
Enter value for my_name: John Smith
SQL> DEFINE my_name
DEFINE my_name = "John Smith"
次の例は、ACCEPT コマンドで使用されるすべてのオプションを示します。
SQL> ACCEPT lname FORMAT A10 DEFAULT 'Joy' PROMPT 'Enter Last Name [Joy]:' HIDE
FORMAT オプ
ションは、lname の値を長さ 10 文字の英数字と指定します。 ユーザーが入力を要求されたときに値を入力せず、ENTER キーを押したときに使用される DEFAULT は JOY です。 ACCEPT コマンドが発行されたときのコマンド行のプロンプトは定義どおりに Enter Last Name [JOY]: になります。 この場合、デフォルトはプロンプトの一部となっています。 HIDE オプションは、
ユーザーがコンソールで lname の値として入力した値をエコー出力しません。
以下の例は、CLPPlus スクリプト・ファイルの中で ACCEPT コマンドを使用する方法、また、定義されている変数に値を代入する複数の異なる方法を示すものです。 これは average_salary.sql という名前のスクリプトであり、特定の部門に属する従業員 (employee) の給与 (salary) の平均を求めます。
ACCEPT dept_id PROMPT "Enter Department ID code : "
SELECT AVG(salary) FROM employee WHERE workdept = &dept_id;このスクリプトを呼び出すには、2 つの異なる方法、つまり引数を指定する方法と引数を指定しない方法とがあります。
SQL> start average_salary 'E21'
Original statement:SELECT AVG(salary) FROM employee WHERE workdept = &dept_id
New statement with substitutions:SELECT AVG(salary) FROM employee WHERE workdept = 'E21'
1
------------------------------------------
47086.66666666666666666666666666667
SQL> start average_salary
Enter Department ID code : 'E21'
Original statement:SELECT AVG(salary) FROM employee WHERE workdept = &dept_id
New statement with substitutions:SELECT AVG(salary) FROM employee WHERE workdept = 'E21'
1
------------------------------------------
47086.66666666666666666666666666667
