如何从XML中提取数值

时间:2019-07-12 12:58:48

标签: sql xml oracle report fusion

我正在尝试创建BI Publisher报告,我正在使用HRC_TXN_DATAHRC_TXN_HEADERfa_fusion_soainfra.WFTASK表。

在这里,我尝试从GoalIdList表的data_cache列中的XML代码中提取HRC_TXN_DATA

我正在使用此代码

XMLTYPE(txn_d.data_cache).EXTRACT('/TRANSACTION/TransCtx/GoalIdList/text()').getStringVal()

注意*我已经尝试将text()更改为int(),number(),但仍然遇到相同的错误。

这是我正在使用的查询

 select 
wft.ASSIGNEESDISPLAYNAME,
txn_d.STATUS,
XMLTYPE(txn_d.data_cache).EXTRACT(s.column_value,'/TRANSACTION/TransCtx/GoalIdList/int()').getStringVal() Goal_id
from 
 fa_fusion_soainfra.WFTASK wft
 left outer join HRC_TXN_HEADER txn_h on wft.CORRELATIONID = to_char(txn_h.TRANSACTION_ID)
 left outer join HRC_TXN_DATA txn_d on txn_h.TRANSACTION_ID = txn_d.TRANSACTION_ID 

我收到此错误

  

oracle.xdo.servlet.data.DataException:oracle.xdo.servlet.data.DataException:oracle.xdo.servlet.data.DataException:oracle.xdo.XDOException:java.sql.SQLException:ORA-06502:PL / SQL:数字或值错误ORA-06512:位于“ SYS.XMLTYPE”,第272行ORA-06512:位于第1行”

1 个答案:

答案 0 :(得分:0)

select xmlcast(xmlquery('/TRANSACTION/TransCtx/GoalIdList' passing xmltype(s.data_cache) returning content) as varchar2(40)) from s;