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