Answers:
如果您有时使用替换变量,则可能不想关闭定义。在这些情况下,您可以将&符号从等价的数字转换为,|| Chr(38) ||
或将其附加为单个字符|| '&' ||
。
我用下面的代码解决了:
set escape on
然后在左边的&旁边放一个\ 'value_\&_intert'
Att
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
但它给了我错误ORA-01780: string literal required
。
您可以使用以下命令将执行脚本时要查找的特殊字符设置为另一个值: 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 escape on