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