2

通过在游标上迭代,我创建了一个具有以下 xml 格式的 CLOB。假设l_tot_clobclob 包含以下内容:

<a row="1">
 <b>test</b>
<a>
<a row="2">
 <b>test</b>
</a>

然后我尝试将上面放在另一个名为 Record 的元素根中,并将结果分配给另一个名为l_return_clob. 代码如下:

SELECT xmlelement("Record" , xmlconcat(xmltype(l_tot_clob))).getclobval() 
INTO l_return_clob
FROM dual;

我对重新运行的期望l_return_clob是这样的:

<Record>
<a row="1">
 <b>test</b>
<a>
<a row="2">
 <b>test</b>
</a>
</Record>

但正如我所假设的那样,由于l_tot_clob没有父元素,所以在我尝试创建一个根元素作为记录时,它给出了以下错误:

fdm_ttwof_pkg.main_prc - 异常 -ORA-31011:XML 解析失败 ORA-19202:XML 处理中发生错误 LPX-00245:文档结束后有额外数据

在这种情况下,如何将 Record 元素添加为根元素。

4

1 回答 1

3

如果您只需要将您的 xml 包含在 中<Record>..</Record>,而您的 XML 在 CLOB 中,那么您为什么不简单地连接'<Record>'and'</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;
于 2013-11-04T08:05:09.460 回答