は、これを行うための最も簡単な方法のように思えるが、あなたはまた、使用してスクリプトを呼び出すことができます。
sqlplus /NOLOG @test.sql <userid> <pw> <tablespace> empty empty empty
と値のいずれかが同じである場合は、スクリプトの中身をチェック"空の"?そうすれば、パラメータが渡されなくてもスクリプトはハングしません。なぜなら3つのフィラーパラメータが残っているからです。
あなたはこのような何か使用してチェックすることができ
:入力が無効である、戻り値がなければ1になります。(& &の代わり&を使用すると、あなたは一度だけ値の入力を求められます意味)
var status number;
set verify on
whenever sqlerror exit 1;
begin
:status := 0;
select decode('&&1','empty',1,:status) into :status from dual;
select decode('&&2','empty',2,:status) into :status from dual;
select decode('&&3','empty',3,:status) into :status from dual;
IF :status != 0 THEN
RAISE_APPLICATION_ERROR (
-20000+-1*:status,'parameter '|| :status || ' is missing');
END IF;
end;
/
をどのような有効な値がパラメータであるかを知ることで、どのパラメータが省略されたのかを知ることは困難です。
実際には、スクリプトを呼び出す前に入力パラメータの数を検証するためにinstallを変更します。それは最良の選択肢のようです。 – ipr