13.8 ARGUMENT
構文
ARGUMENT argument_number [PROMPT text] [DEFAULT text] [HIDE]
デフォルトの入力プロンプト・テキストをカスタマイズし、スクリプトの実行中に引数が渡されない場合に、デフォルト値をパラメータに割り当てます。
項
argument_number
引数の位置を示します。
PROMPT
ユーザー入力用にカスタマイズされたテキストを示します。
DEFAULT
プロンプトが表示されたときに入力値が指定されなかったり、スクリプトに引数として渡されない場合のパラメータのデフォルト値を設定します。
HIDE
入力値をマスクします。これはPROMPTオプションに適用されます。
使用上の注意
次のいずれを使用してもパラメータが定義されていない場合、プロンプトが表示されます。
- スクリプト引数として受渡し
DEFINEコマンドを使用して設定COLUMN_OLDおよびNEW_VALUE変数を使用して設定
スクリプトの実行時には、
PROMPTオプションおよびDEFAULTオプションは次のように動作します:
PROMPTのテキストを指定した場合は、デフォルトのプロンプト・テキストのかわりにそのテキストが表示されます。PROMPTのテキストをHIDEオプションとともに指定した場合は、入力を求めるプロンプトが表示されますが、入力値は表示されません。PROMPTオプションとDEFAULTオプションの両方が設定されているが、プロンプトが表示されたときにユーザーが値を指定しない場合、デフォルト値が使用されます。たとえば、ユーザーが値を指定せずに[Enter]キーを押した場合です。DEFAULTオプションが設定され、PROMPTオプションが設定されていない場合は、デフォルト値が使用されます。この場合、ユーザーは入力を求められません。PROMPTオプションが設定され、引数値がスクリプトに渡されない場合は、デフォルトのプロンプト・テキストではなく、カスタマイズされた入力プロンプト・テキストが表示されます。- 引数がスクリプトに渡されると、その値が使用されます。この場合、SQL*Plusは入力を求めるプロンプトも表示せず、デフォルト値も使用しません。
例
次に、test1.sqlという名前のサンプル・スクリプトを示します。このスクリプトには次のものが含まれます:
ARGUMENT 1 PROMPT "Enter value for Arg1:"
DEFINE arg1 = '&1';
SELECT ename FROM emp WHERE empno LIKE '&arg1';引数を指定せずにこのスクリプトを実行すると、入力を求められます。その後、次の例のように値を入力できます。
@test1.sql
Enter value for Arg1: 7499スクリプトによって次の出力が表示されます。
ENAME
------
ALLEN 次に、
test2.sqlという名前のサンプル・スクリプトを示します。このスクリプトには次のものが含まれます:ARGUMENT 1 PROMPT "Enter value for Arg1: " default "%"
DEFINE arg1 = '&1';
SELECT ename FROM emp WHERE empno LIKE '&arg1';引数を指定せずにこのスクリプトを実行すると、入力を求められます。入力値を入力せずに[ENTER]キーを押します。
@test2.sql
Enter value for Arg1: デフォルト入力値(%)が使用されます。スクリプトによって次の出力が表示されます。
ENAME
----------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
14 rows selected.次に、
test3.sqlという名前のサンプル・スクリプトを示します。このスクリプトには次のものが含まれます:ARGUMENT 1 PROMPT "Enter value for Arg1: "
DEFINE arg1 = '&1';
SELECT ename FROM emp WHERE empno LIKE '&arg1';引数を指定せずにこのスクリプトを実行すると、入力を求められます。入力値を入力せずに[ENTER]キーを押します。
@test3.sql
Enter value for Arg1: スクリプトによって次の出力が表示されます。
No rows selected.次に、
test4.sqlという名前のサンプル・スクリプトを示します。このスクリプトには次のものが含まれます:ARGUMENT 1 DEFAULT "7499"
DEFINE arg1 = '&1'
SELECT ename FROM emp WHERE empno LIKE '&arg1';引数を指定せずにこのスクリプトを実行すると、デフォルト値が使用されます。
@test4.sqlスクリプトによって次の出力が表示されます。ENAME
----------
ALLEN引数を指定してこのスクリプトを実行すると、引数値が使用されます。
@test4.sql 7521スクリプトによって次の出力が表示されます。ENAME
----------
WARD次に、
test5.sqlという名前のサンプル・スクリプトを示します。このスクリプトには次のものが含まれます:ARGUMENT 1 PROMPT "enter value for Arg1: " default '%' hide
DEFINE arg1 = '&1';
SELECT ename FROM emp WHERE empno LIKE '&1';引数を指定せずにこのスクリプトを実行すると、入力を求められます。HIDEオプションが指定されているため、入力した値はマスクされます。
@test5.sql
Enter value for Arg1: ****スクリプトによって次の出力が表示されます。
ENAME
----------
WARD