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

时间:2008-09-22 23:19:04

标签: sql oracle sqlplus

我有一个SQL脚本,可以创建一个包含带符号(&)的注释的包。当我从SQL Plus运行脚本时,系统会提示我输入以&开头的字符串的替换值。如何禁用此功能以便SQL Plus忽略&符号?

7 个答案:

答案 0 :(得分:165)

这可能对您有用:

set define off

否则&符需要位于字符串的末尾,

'StackOverflow &' || ' you'

编辑:保存时我点击了快乐...这是从blog引用的。

答案 1 :(得分:23)

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

答案 2 :(得分:11)

我解决了下面的代码:

set escape on

然后放一个\旁边&在左边'value_\&_intert'

ATT

答案 3 :(得分:6)

您可以通过使用SET DEFINE <1_CHARACTER>

将执行脚本时查找的特殊字符设置为其他值

默认情况下,DEFINE功能本身已启用,并且设置为&amp;

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

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>

答案 4 :(得分:3)

set define off&lt; - 这是我找到的最佳解决方案

我也试过......

set define}

我能够插入几条包含&符号'&amp;'的记录但是我不能在文本中使用'}'字符 所以我决定使用“set define off”,一切正常。

答案 5 :(得分:2)

根据this nice FAQ,有几种解决方案。

如果您可以修改评论,您也可以使用反斜杠字符\来转义&符号。

答案 6 :(得分:0)

我有一个CASE语句,其中WHEN column ='sometext&more text'THEN ....

我用 当column ='sometext'|| CHR(38)|| “更多文字”然后...

您也可以使用 当列类似“ sometext _ more text”时...

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