2011-09-20 140 views
2

条款我有SQL查询的SQL开发人员IDE中运行:及在甲骨文

SELECT IC.ID 
FROM INSTITUTE_COURSE IC 
WHERE IC.NAME = 'CIVIL & ARCHITECTURE CAD'; 

由于&在where子句中,IDE会返回一个错误"Enter Substitution Variable".

如果我在字符串中删除&,查询运行良好。

我的问题是如何运行查询与& /和号在where子句?

+1

而你的问题是...? –

+0

我试过一个类似的查询(WHERE子句与字符串包含一个&)到PL/SQL Developer中,我没有这种行为。 –

+0

Duplicate of:http://stackoverflow.com/questions/118190/how-do-i-ignore-ampersands-in-a-sql-script-running-from-sql-plus,&http://stackoverflow.com /问题/ 1137354/Oracle的PL-SQL转义字符换一个。 –

回答

7

在执行查询之前执行命令SET DEFINE OFF

+2

实际上,当OP问题被标记为“sqlplus” – Benoit

+0

@Benoit时,这个答案会更好理解 - 不确定你的意思。该命令也适用于SQL Developer(我在发布之前对其进行了测试)。 –

+0

SQL Developer是一种符合SQL * Plus语法的工具,以便脚本可以移植。但是,如果您使用C++编程或使用Tora或其他Oracle客户端,SQL查询中的'&'是正确的。 – Benoit

4

除了戴夫哥斯达黎加的答案,这里是本手册的相关部分:

替代变量:
http://download.oracle.com/docs/cd/B28359_01/server.111/b31189/ch5.htm#CACIFHGB

的SET DEFINE OFF命令:
http://download.oracle.com/docs/cd/B28359_01/server.111/b31189/ch8.htm#sthref929

+0

仅供参考,这些链接专门针对SQLPlus,但在这种情况下,这些信息也适用于SQL Developer。 –

+0

@Dave:好点。但是,然后SQL Developer手册简单地提到“支持SQL * Plus命令”,但没有解释它们,所以显然它们的工作方式与SQL * Plus相同 –