gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:14:05 24 4
gpt4 key购买 nike

我在脚本中调用过程并像这样传递变量:

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

在程序中我使用这样的值:

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

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

Enter value for 3: 

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

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

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

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

最佳答案

嗯,是的,我看到它很旧但是......直到现在,还没有人回答!

OP,这就是您要找的东西,但并不简单!我最初是在 Tanel Poder 的网站上发现该技术的,但不确定他是否想出了它。

无论如何,我在这里使用它来设置默认值,以防警告和关键限制未传递到脚本中。

rem setup default values
def DEFAULT_WARN_LEVEL='97'
def DEFAULT_CRIT_LEVEL='99'

rem trick to assign values to &1 and &2 so that SQL*Plus does not ask
col warn_level new_value 1
col crit_level new_value 2
select null warn_level
, null crit_level
from dual
where 1=2
/

rem if values were passed in, use them, if not, use the defaults
select nvl('&1','&DEFAULT_WARN_LEVEL') warn_level
, nvl('&2','&DEFAULT_CRIT_LEVEL') crit_level
from dual
/
rem the values, either passed in or defaults are now in &1 and &2

rem put the values in meaningful variables
def warn_level='&1'
def crit_level='&2'

关于oracle - 如何为缺少的替换参数设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27128432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com