【问题标题】:Create a xml root element for a clob which does not have a root element in Oracle为在 Oracle 中没有根元素的 clob 创建 xml 根元素
【发布时间】:2013-11-04 16:05:09
【问题描述】:

通过在游标上迭代,我创建了一个具有以下 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;

我对重新运行 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 元素添加为根元素。

【问题讨论】:

    标签: database oracle plsql


    【解决方案1】:

    如果您只需要将您的 xml 包含在 &lt;Record&gt;..&lt;/Record&gt; 中,而您的 XML 在 CLOB 中,那么您为什么不简单地连接 '&lt;Record&gt;''&lt;/Record&gt;' 字符串?

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 2021-11-27
      相关资源
      最近更新 更多