如何在从SQL Plus运行的SQL脚本中忽略符号?
我有一个SQL脚本,它创建了一个包,其中包含一个包含符号(&)的注释。当我从SQL Plus运行脚本时,系统会提示我输入以&开头的字符串的替换值。如何禁用此功能以使SQL Plus忽略与符号?这可能适用于您:如何在从SQL Plus运行的SQL脚本中忽略符号?,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,我有一个SQL脚本,它创建了一个包,其中包含一个包含符号(&)的注释。当我从SQL Plus运行脚本时,系统会提示我输入以&开头的字符串的替换值。如何禁用此功能以使SQL Plus忽略与符号?这可能适用于您: set define off 否则,符号必须位于字符串的末尾 'StackOverflow &' || ' you' 编辑:保存时我很高兴。。。这是从一个。中引用的,因为有几个解决方案 如果可以修改注释,则还可以使用反斜杠字符\转义符号AND。如果有时使用替换变量,则可能不希望
set define off
否则,符号必须位于字符串的末尾
'StackOverflow &' || ' you'
编辑:保存时我很高兴。。。这是从一个。中引用的,因为有几个解决方案
如果可以修改注释,则还可以使用反斜杠字符
\
转义符号AND。如果有时使用替换变量,则可能不希望禁用定义。在这些情况下,您可以将与之对应的数字符号转换为“| | Chr(38)|
”,或将其作为单个字符追加,如“| |”和“|
”我用以下代码解析:
set escape on
并在左侧的“值”和“intert”旁边加上一个“
Att您可以通过使用
set DEFINE将脚本执行时查找的特殊字符设置为另一个值
默认情况下,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>
设置define off我有一个CASE语句,其中WHEN column='sometext&more text'然后
我把它换成了
当column='sometext'| | CHR(38)| | | more text'时,则
你也可以使用
当像“sometext uuu more text”这样的列出现时
(u是单个字符的通配符)您也可以在glogin.sql站点配置文件设置文件或login.sql用户配置文件设置文件中指定这一点。如果您对替换变量不感兴趣,这是最简单的解决方案。始终是一个救命的解决方案:)谢谢。特定场景是一个包,其源在注释中包含一个符号。我不知道该如何使用连接或替换。JoshL,你是对的,我只是为了完整性列出了这个。它与您的问题相关,尽管它没有直接回答您的特定问题。它实际上帮助了我。反斜杠转义在SQL*Plus或SQL*中不起作用SQLDeveloper@JimTough在使用将escape设置为on
激活它后,它会这样做。这对我来说很有效。我在tablename列上使用命令comment.columnname是'war'| | chr(38)| | |'peace'
,但它给了我一个错误ORA-01780:string literal required
。我最近也使用过这种方法。我喜欢它,因为它不需要我修改PL/SQL包的内容。