簡體   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