你可以只包括null
爲您解碼公認的價值:
col scr new_value script
set term off
set verify off
select decode('&partitions', null, 'CreateTables',
'CreateTablesPartitions') as scr from dual;
set term on
@@&script &partitions
...如果這將運行CreateTables
輸入的partitions
值爲空。
但是,因爲您有termout off
,您將看不到該值的提示。您可能希望使用位置變量(&1
等),具體取決於您打算如何調用此方法,但假設您希望在運行時收到提示,則可以將termout on
和noprint
添加到column
命令(col scr new_value script noprint
),這會在輸出中給出一些空行;或早些時候設置partitions
。不能使用define
,因爲它不會使用空值。
最乾淨的方法可能是使用accept
其自己的提示:
accept partitions prompt "Enter partitions: "
col scr new_value script noprint
set verify off
set term off
select decode('&partitions', null, 'CreateTables',
'CreateTablesPartitions') as scr from dual;
set term on
@@&script &partitions
通過簡單的虛擬腳本調用,例如CreateTables.sql
:
prompt In CreateTables
...和CreateTablesPartitions
:
prompt In CreateTablesPartitions with passed value "&1"
...這給:
Enter partitions:
In CreateTables
...和:
Enter partitions: Test
In CreateTablesPartitions with passed value "Test"