我正尝试对Oracle数据库执行一个简单的INSERT语句。其中一个值是VARCHAR2字段,该插入语句包含一个&符号。我该如何处理这个问题?我尝试了以下方法:
- 使用set escape on将&转义为\&
- 设置scan off(这会导致ORA-00922缺少或无效选项错误)
- 设置define off(这会导致ORA-00922缺少或无效选项错误)
还有其他的想法吗?
我正尝试对Oracle数据库执行一个简单的INSERT语句。其中一个值是VARCHAR2字段,该插入语句包含一个&符号。我该如何处理这个问题?我尝试了以下方法:
还有其他的想法吗?
我是通过用另一个 & 转义 & 来解决这个问题的。
例如:
INSERT INTO Foo (Bar) VALUES ('Up && Away');
非常好用。感谢所有的帮助。
PL/SQL Developer中需要花费时间熟悉的一个功能是各种不同窗口类型的大量存在。
其中之一是COMMAND窗口,它基本上是一个SQL*Plus模拟器。我们可以在该窗口中运行SQL*Plus命令以及SQL语句,因此SET ESCAPE
、SET DEFINE
以及SET SCAN OFF
等命令可以在该窗口中使用。
你尝试过这样的方法吗?
INSERT INTO tablex VALUES ('Sid ' || '&' || ' Nancy');
改进我的第一个答案,你的问题与PL/SQL开发人员有关。如果你在PL/SQL Developer命令窗口中执行你的块,则也可以使用标准的SET DEFINE OFF,其工作方式与SQL * Plus相同。
chr(38)
解决方案更优雅。 - APC在我的select语句中,concat函数完美地工作了。以下是我所做的:
select FUND_NM
FROM PERFORMANCE
WHERE upper(FUND_DESC) in ('My L&' ||'L FUNDS')
在PL/SQL中,我使用chr(38)
代替&符号。
addr:= 'mysite.com/order.aspx?no=5678' || CHR(38) || 'id=947';
--above line gives you 'mysite.com/order.aspx?no=5678&id=947';
这只是SQL编辑器的问题。要解决这个问题,只需使用SET DEFINE OFF编译该过程。 在服务器上执行的PL (执行)不会遇到此问题。