在PL / SQL Developer中转义&符号

时间:2011-08-18 07:16:45

标签: oracle escaping special-characters plsqldeveloper

我正在尝试针对Oracle数据库的简单INSERT语句。其中一个值是VARCHAR2字段,insert语句包含一个&符号。我该怎么做呢?我尝试了以下方法:

  1. 逃离&作为\&使用set escape on
  2. 设置扫描关闭(这会导致ORA-00922缺失或无效选项错误)
  3. set define off(这会导致ORA-00922缺失或无效选项错误)
  4. 还有其他想法吗?

7 个答案:

答案 0 :(得分:24)

我如何解决它是逃避&与另一个&。

例如:

INSERT INTO Foo (Bar) VALUES ('Up && Away');

很好地工作。感谢所有帮助

答案 1 :(得分:21)

当前版本的PL / SQL Developer(11.0.x)有一个禁用/启用替换变量的按钮。

enter image description here

答案 2 :(得分:12)

需要时间熟悉的PL / SQL Developer的一个特性是过多的不同窗口类型。

其中一个是COMMAND窗口,它基本上是一个SQL * Plus模拟器。我们可以运行SQL * Plus命令以及SQL,因此SET ESCAPESET DEFINESET SCAN OFF可以在该窗口中运行。

答案 3 :(得分:8)

你尝试过这样的事吗?

INSERT INTO tablex VALUES ('Sid ' || '&' || ' Nancy');

改进我的第一个答案,你的问题与PL / SQL Developer有关。如果在PL / SQL Developer Command窗口中执行块,也可以使用标准的SET DEFINE OFF,它与SQL * Plus中的相同。

答案 4 :(得分:4)

对于我来说,concat工作得很好,这是我在我的选择陈述中所做的:

select FUND_NM
FROM PERFORMANCE
WHERE upper(FUND_DESC) in ('My L&' ||'L FUNDS')

答案 5 :(得分:3)

我使用chr(38)我需要PL / SQL中的&符号。

addr:= 'mysite.com/order.aspx?no=5678' || CHR(38) || 'id=947';
--above line gives you 'mysite.com/order.aspx?no=5678&id=947';

答案 6 :(得分:1)

这只是一个SQL编辑器问题。要解决此问题,只需使用SET DEFINE OFF编译该过程; 。 执行PL(在服务器中执行)不会遇到这个问题。