Oracle查询中提取完整LinkSnapshot XML节点的方法求助
解决Oracle提取完整XML父节点的问题
错误原因
EXTRACTVALUE函数仅能提取叶子节点的文本值,而你要提取的LinkSnapshot是包含属性和子节点的父节点,不符合该函数的使用场景,因此触发19026错误。
可行解决方案
以下两种方法均可完整提取LinkSnapshot节点的全部内容(包括属性、子节点):
方法1:使用XMLQUERY + XMLSERIALIZE(推荐,Oracle 11gR2及以上版本支持)
SELECT XMLSERIALIZE( CONTENT XMLQUERY('/List/LinkSnapshot' PASSING XMLTYPE(ss.links) RETURNING CONTENT) AS CLOB ) AS "Snapshot" FROM your_table ss;
方法2:使用EXTRACT函数(旧版本兼容,Oracle 10g及以上支持,12c后标记为废弃)
SELECT EXTRACT(XMLTYPE(ss.links), '/List/LinkSnapshot').getClobVal() AS "Snapshot" FROM your_table ss;
说明
两种方法都会将LinkSnapshot节点及其内部所有内容转换为字符串形式返回,符合你提取完整父节点的需求。
内容的提问来源于stack exchange,提问作者Matthew Tuman
相关产品推荐
相关产品推荐

