我有一个SQL脚本,可以创建一个包含带符号(&)的注释的包。当我从SQL Plus运行脚本时,系统会提示我输入以&开头的字符串的替换值。如何禁用此功能以便SQL Plus忽略&符号?
答案 0 :(得分:165)
答案 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”时...
(_是单个字符的通配符)