[英]String literal too long while inserting a XML into XMLTYPE Column in Oracle
i have a text XML with more than 100K Characters, I am trying to write a PLSQL Block to insert this XML into an XMLTYPE Oracle Table. 下面是我的 PLSQL 块,它不允许插入 xml 并得到错误说字符串文字太长,因为 Oracle 的 SQL 只能处理到 40000 。 我无法更改 Oracle 中的数据类型。 我怎样才能插入这个 XML?
Table Column is REQUEST_XML XMLTYPE
我正在尝试这样,但似乎也不起作用。
INSERT INTO XYZ.ABC(ID,REQUEST_XML) values(123,yourXmlStr);
PLSQL 如下,
DECLARE
yourXmlStr xmltype := xmltype('<DRIVEResponse TimeZone="EDT">
<Condition1 ActionStep="ABCABC" /> // This can be more than 100K Characters
</DRIVEResponse>');
BEGIN
INSERT INTO XYZ.ABC(ID,REQUEST_XML) values(123,XMLTYPE.CREATEXML(yourXmlStr));
COMMIT;
END;
您正在创建xmltype
两次,这是不必要的。 您的源数据是字符串文字(两个单引号之间的任何内容),它在 PL/SQL 中的最大长度为 4000 个字符(或 32767,请参阅MAX_STRING_SIZE
)。 幸运的是, xmltype
构造函数也可以对clob
进行操作。 你没有说源数据来自哪里,所以我不确定构建它的最佳方法:
declare
l_clob clob;
l_xml xmltype;
begin
l_clob := '<DRIVEResponse TimeZone="EDT">';
l_clob := l_clob || '<Condition1 ActionStep="ABCABC" />';
... repeat in chunks of less than 32768 characters ...
l_clob := l_clob || '</DRIVEResponse>';
l_xml := xmltype.createxml( l_clob );
INSERT INTO XYZ.ABC(ID,REQUEST_XML) values(123, l_xml);
end;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.