如何为缺少的替换参数设置默认值

时间:2014-11-25 13:46:52

标签: oracle plsql

我在脚本中调用过程并传递如下变量:

@@./procedudure.sql 'var1' 'var2' 'var3'

在程序中我使用如下值:

DEFINE variable1 = '&1'
DEFINE variable2 = '&2'
DEFINE variable3 = '&3'
...
insert into TABLE (id, text) values ('&varibale1', '&variable2&variable3')

我希望能够仅用两个参数而不是3来调用该过程,以便最后一个用空字符串替换。但是当我这样称呼它时,我得到了这个提示:

Enter value for 3: 

我也试过使用这样的参数,但结果相同:

DEFINE variable2 = '&2' || '&3'

我发现此页面使用提示输入缺失变量,但无法找到如何设置默认值:https://blogs.oracle.com/opal/entry/sqlplus_101_substitution_varia#9_14

从代码中可以看出,我希望连接最后的参数。这应该是240个字符限制的解决方法。

2 个答案:

答案 0 :(得分:1)

当您在程序中将其编码为DEFINE variable3 = '&3'时,系统认为3是可变的并且它将始终提示其值。

如果你想传递3的默认值,你应该做DEFINE 3 = YOUR_VALUE_FOR_PARAM_3

答案 1 :(得分:1)

在示例链接的第9.14节中,我没有看到他使用任何默认值的位置。他要么就是要求,要么是参数。 SQLPLUS总是要求你在文件中看到的任何& 1,& 2,..如果没有作为输入参数给出。无论你如何以及在何处使用它。它不像Bash,他只用null替换1美元,并没有做任何事情。我不认为你可以在SQLPLUS中禁用自动询问。

相关问题