通过迭代游标,我创建了一个低于xml格式的CLOB。假设l_tot_clob
clob包含以下内容:
<a row="1">
<b>test</b>
<a>
<a row="2">
<b>test</b>
</a>
然后我尝试将上面放在另一个名为Record的元素根目录中,并将结果分配给另一个名为l_return_clob
的clob。代码如下:
SELECT xmlelement("Record" , xmlconcat(xmltype(l_tot_clob))).getclobval()
INTO l_return_clob
FROM dual;
我对retrun l_return_clob
的期望是这样的:
<Record>
<a row="1">
<b>test</b>
<a>
<a row="2">
<b>test</b>
</a>
</Record>
但是我假设因为l_tot_clob
没有父元素,所以在尝试创建根元素为Record时,它会给出以下错误:
fdm_ttwof_pkg.main_prc - 例外-ORA-31011:XML解析失败 ORA-19202:XML处理LPX-00245发生错误:额外数据 文件结束后
在这种情况下,如何将Record元素添加为根元素。
答案 0 :(得分:3)
如果您只需要将您的xml包含在<Record>..</Record>
中,并且您的XML位于CLOB中,那么为什么不只是简单地连接'<Record>'
和'</Record>'
字符串?
DECLARE
v_clob CLOB;
v_clob_with_root CLOB;
v_xml xmltype;
BEGIN
v_clob := '
<a row="1">
<b>test</b>
<a>
<a row="2">
<b>test</b>
</a>';
v_clob_with_root := '<Record>' || v_clob_with_root || '</Record>';
v_xml := xmltype(v_clob_with_root); -- no errors, XML is correct
END;