如何忽略从SQL Plus运行的SQL脚本中的&符号?
题
我有一个SQL脚本,可以创建一个包含&符号(<!> amp;)的注释的包。当我从SQL Plus运行脚本时,系统会提示我输入以<!> amp;开头的字符串的替换值。如何禁用此功能以便SQL Plus忽略&符号?
解决方案
其他提示
如果您有时使用替换变量,则可能不希望关闭定义。在这些情况下,您可以将&符号与|| Chr(38) ||
中的数字等效项进行转换,或者将其作为单个字符附加到|| '&' ||
中。
我解决了下面的代码:
set escape on
并在<!>放置旁边放一个\;在左边'value_\&_intert'
ATT
您可以通过使用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>
set define off <!> lt; - 这是我找到的最佳解决方案
我也试过......
set define}
我能够插入几条包含&符号'!>放大器的记录;'但是我不能在文本中使用'}'字符 所以我决定使用<!> quot; set define off <!> quot;一切正常。
根据这个不错的常见问题解答,有一对夫妇的解决方案。
如果您可以修改评论,您也可以使用反斜杠字符\
来转义&符号。
我有WHEN column ='sometext <!> amp的CASE声明;更多文字'那......
我用它替换了它 当列='sometext'||时CHR(38)|| '更多文字'然后......
你也可以用 当列LIKE'sometext _ more text'THEN ...(_是单个字符的通配符)
不隶属于 StackOverflow