【问题标题】:How to Extract a numeric value from the XML如何从 XML 中提取数值
【发布时间】:2019-11-22 06:05:19
【问题描述】:

我正在尝试创建BI Publisher 报告,我正在使用HRC_TXN_DATA、HRC_TXN_HEADER、fa_fusion_soainfra.WFTASK 表。

这里我试图从XML 代码中提取GoalIdList,该代码位于HRC_TXN_DATA 表的data_cache 列中。

我正在使用此代码

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 行

【问题讨论】:

  • 我认为CORRELATIONID 列不是char 或varchar2,我认为它是number 或integer,而您将与to_char 一起加入它。这是您的包裹中的line 272?
  • 你有同样的错误吗?
  • 正如你所建议的,我将查询替换为“select wft.ASSIGNEESDISPLAYNAME, txn_d.STATUS, XMLTYPE(txn_d.data_cache).EXTRACT('/TRANSACTION/TransCtx/GoalIdList/text()').getStringVal () Goal_id from fa_fusion_soainfra.WFTASK wft left outer join HRC_TXN_HEADER txn_h on wft.CORRELATIONID = 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.SQLSyntaxErrorException: ORA-01722: 无效号码“我不明白什么是无效号码
  • 好的,你已经解决了上一个错误,这个错误发生在你的select-s。尝试在select和from之间一一评论,尝试编译查询会发现问题

标签: sql xml oracle report fusion


【解决方案1】:
select xmlcast(xmlquery('/TRANSACTION/TransCtx/GoalIdList' passing xmltype(s.data_cache) returning content) as varchar2(40)) from s;

【讨论】:

  • 收到错误“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: numeric or value error ORA-06512: at "SYS.XMLTYPE", line 272 ORA-06512: at line 1"
  • 请发布示例 xml 进行测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多