双引号不是你的问题。
请参阅此处的 SQLFiddle 示例:http ://sqlfiddle.com/#!4/054bc/1
我的猜测是您的 XML 中有其他一些单引号,这导致了问题。
为了克服这个问题,您可以使用备用报价机制(手册中的详细信息)。您只需要找到一些绝对不属于您的 XML 的字符。Assuzming 是 eg §
,你可以像这样编写你的代码:
DECLARE
bigtext1 VARCHAR2 (32767);
BEGIN
bigtext1 := q'§<?xml version="1.0" encoding="utf-8"?>§';
UPDATE SCREEN SET XML=bigtext1
WHERE SCREEN_REF='TEST';
END;
/
我通常还将开始和结束分隔符放在自己的行中,以使阅读代码更容易:
DECLARE
bigtext1 VARCHAR2 (32767);
BEGIN
bigtext1 :=
q'§
<?xml version="1.0" encoding="utf-8"?>
<foo id='bar' code="hello">Hello, World</foo>
§';
UPDATE SCREEN SET XML=bigtext1
WHERE SCREEN_REF='TEST';
END;
/
注意 XML 中嵌入的单引号和双引号,无需以任何方式屏蔽它们。在此处查看修改后的 SQLFiddle 示例:http ://sqlfiddle.com/#!4/054bc/7