【问题标题】:Oracle SQL - Extracting clob value from XML with repeating nodesOracle SQL - 从具有重复节点的 XML 中提取 clob 值
【发布时间】:2012-11-26 19:56:03
【问题描述】:

我正在尝试在表上运行 SQL(称为 test_xml,列 xml_data [数据类型 xmltype])。该列包含带有重复节点的 xml (test_3)。当节点包含非 clob 大小的数据时,以下语句运行成功:

SELECT 
   extractvalue (Value (wl), '*/test_3')
      FROM test_xml
         , TABLE (xmlsequence (extract (xml_data, '*/record'))) wl

但是当 test_3 节点包含大量数据时失败:

ORA-01706: 用户函数结果值太大

我修改了我的查询:

SELECT 
   extractvalue(Value (wl), '*/test_3').getClobVal()
      FROM test_xml
         , TABLE (xmlsequence (extract (xml_data, '*/record'))) wl

但这失败了:

ORA-22806: 不是对象或 REF

【问题讨论】:

    标签: sql xml oracle


    【解决方案1】:

    已通过 Oracle 论坛上的回复解决此问题:

    See Forum Post

    从 Oracle 11.2.0.2 版开始:

    SELECT x.*
    FROM test_xml t
       , XMLTable(
           '/*/record'
           passing t.xml_data
           columns
             test_3  clob path 'test_3'
         ) x
    ;
    

    我的数据库版本是 10.2.0.4,因此需要以下“技巧”:

    SELECT dbms_xmlgen.convert(x.test_3.getClobVal(), 1) as test_3
    FROM test_xml t
       , XMLTable(
           '/*/record'
           passing t.xml_data
           columns
             test_3  xmltype path 'test_3/text()'
         ) x
    ;
    

    感谢 odie_63

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-24
      • 2020-09-20
      • 2017-07-19
      • 2016-07-19
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2020-05-05
      相关资源
      最近更新 更多