繁体   English   中英

将 XML 插入 Oracle 中的 XMLTYPE 列时,字符串文字太长

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM