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

Jos*_*shL 98 sql oracle sqlplus

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

Aus*_*nen 171

这可能对你有用:

set define off
Run Code Online (Sandbox Code Playgroud)

否则,&符需要在字符串的末尾,

'StackOverflow &' || ' you'
Run Code Online (Sandbox Code Playgroud)

编辑:保存时我点击了快乐...这是从博客中引用的.

  • 您还可以在glogin.sql站点概要文件设置文件或login.sql用户概要文件设置文件中指定它 (2认同)

Lei*_*fel 23

如果您有时使用替换变量,则可能不希望关闭定义.在这些情况下,您可以将&符号从其数字等效项转换为|| Chr(38) ||或作为单个字符附加到其中|| '&' ||.


Cau*_*uca 11

我解决了下面的代码:

set escape on
Run Code Online (Sandbox Code Playgroud)

并在旁边和左边放一个\ 'value_\&_intert'

ATT


tvC*_*vCa 6

您可以通过使用,将执行脚本时查找的特殊字符设置为另一个值 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>
Run Code Online (Sandbox Code Playgroud)


小智 5

set Define off <- 这是我找到的最好的解决方案

我也尝试过...

设置定义}

我能够插入多个包含与号字符“&”的记录,但我无法在文本中使用“}”字符,因此我决定使用“set Define off”,一切都按预期工作。