您可以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"