如何忽略从 SQL Plus 运行的 SQL 脚本中的 & 符号?

我有一个 SQL 脚本,它创建了一个包,其注释包含一个与号(&)。当我从 SQL Plus 运行该脚本时,系统会提示我为以 & 开头的字符串输入一个替代值。如何禁用此特性以便 SQL Plus 忽略与号?

200167 次浏览

这可能对你有用:

set define off

否则,与号必须在字符串的末尾,

'StackOverflow &' || ' you'

编辑: 我是点击-高兴的时候保存... 这是从 blog引用。

根据 这个不错的常见问题,有几个解决方案。

如果可以修改注释,还可以用反斜杠字符 \转义与符号。

如果有时使用替换变量,则可能不希望关闭 Definition。在这些情况下,您可以像在 || Chr(38) ||中那样将与号等效的数字转换为与号,或者像在 || '&' ||中那样将与号作为单个字符附加。

我用下面的代码解决了这个问题:

set escape on

'value_\&_intert'的左边放一个

Att

可以通过使用 SET DEFINE <1_CHARACTER>将脚本执行时查找的特殊字符设置为另一个值

默认情况下,DEFINE 函数本身处于打开状态,并被设置为 &

如前所述,它可以被关闭,但也可以通过将其设置为不同的值来避免。要非常清楚你设置了什么标志。在下面的例子中,我选择了 # 字符,但是这个选择只是一个例子。

SQL> select '&var_ampersand #var_hash' from dual;
Enter value for var_ampersand: a value


'AVALUE#VAR_HASH'
-----------------
a value #var_hash


SQL> set define #
SQL> r
1* select '&var_ampersand #var_hash' from dual
Enter value for var_hash: another value


'&VAR_AMPERSANDANOTHERVALUE'
----------------------------
&var_ampersand another value


SQL>

这是我找到的最好的解决方案

我也试过..。

设置定义}

我能够插入几条包含与号字符“ &”的记录,但是不能在文本中使用“}”字符 因此,我决定使用“ set Definition off”,一切都按照它应该的方式运行。

I had a CASE statement with WHEN column = 'sometext & more text' THEN ....

我把它换成了 当专栏 = ‘ some text’| | Committee (38) | | ‘ more text’THEN..。

你也可以用 当列像‘ some text _ more text’THEN..。

(_ 是单个字符的通配符)