gpt4 book ai didi

sql - Oracle SQL - 从具有重复节点的 XML 中提取 clob 值

转载 作者:数据小太阳 更新时间:2023-10-29 01:54:30 33 4
gpt4 key购买 nike

我正在尝试在一个表上运行 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: user function result value was too large

我修改了我的查询:

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

但这失败了:

ORA-22806: not an object or REF

最佳答案

这已通过在 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

关于sql - Oracle SQL - 从具有重复节点的 XML 中提取 clob 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13783403/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com