Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在从SQL Plus运行的SQL脚本中忽略符号?_Sql_Oracle_Sqlplus - Fatal编程技术网

如何在从SQL Plus运行的SQL脚本中忽略符号?

如何在从SQL Plus运行的SQL脚本中忽略符号?,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,我有一个SQL脚本,它创建了一个包,其中包含一个包含符号(&)的注释。当我从SQL Plus运行脚本时,系统会提示我输入以&开头的字符串的替换值。如何禁用此功能以使SQL Plus忽略与符号?这可能适用于您: set define off 否则,符号必须位于字符串的末尾 'StackOverflow &' || ' you' 编辑:保存时我很高兴。。。这是从一个。中引用的,因为有几个解决方案 如果可以修改注释,则还可以使用反斜杠字符\转义符号AND。如果有时使用替换变量,则可能不希望

我有一个SQL脚本,它创建了一个包,其中包含一个包含符号(&)的注释。当我从SQL Plus运行脚本时,系统会提示我输入以&开头的字符串的替换值。如何禁用此功能以使SQL Plus忽略与符号?

这可能适用于您:

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包的内容。