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