【发布时间】:2015-08-21 09:45:34
【问题描述】:
我在尝试从 Oracle 中的 XML 文件中选择某些字段时遇到问题。
我收到以下错误:
ORA-19279:XPTY0004 - XQuery 动态类型不匹配:预期的单例序列 - 得到多项序列
XML 结构 是这样的:
<REC r_id_disclaimer="yyyyyyy">
<UID>xxxxxxx</UID>
<static_data>
<keywords count="4">
<keyword>Brain-</keyword>
<keyword>Depres</keyword>
<keyword>Acute</keyword>
<keyword>Chine</keyword>
</keywords>
我使用的查询如下:
select RecUid.CD_UID
, Abst2.*
from testtable2 t
cross join xmltable(xmlnamespaces(default 'http://scientific.thomsonreuters.com/schema/wok5.4/public/FullRecord'),
'records/REC'
passing t.xml_file
columns CD_UID varchar2(200) path 'UID',
--names xmltype path 'static_data/summary'
Abstract xmltype path 'static_data/fullrecord_metadata'
) RecUid
cross join xmltable(xmlnamespaces(default 'http://scientific.thomsonreuters.com/schema/wok5.4/public/FullRecord'),
'keywords/keywords'
passing RecUid.Abstract
columns keyword varchar2(200) path 'keyword'
) as Abst2
;
我已阅读与同一错误相关的所有其他主题,但我找不到适合我的情况的解决方案。我试过了
columns keyword varchar2(200) path 'keyword()'
or
columns keyword varchar2(200) path 'keyword/text()'
or
columns keyword varchar2(200) path '//*keyword()'
and
columns keyword varchar2(200) path '/.keyword'
我们正在运行:
Oracle Database 11g Enterprise Edition 11.2.0.4.0 64bit Production
谁能帮我找出错误?
谢谢!
【问题讨论】:
-
上述 xml 的预期输出是什么?此外,您能否将示例 xml 更新为可用于运行查询的正确且有效的 xml? (例如,
没有结束标记,并且 sampl xml 中没有提及 ,但查询中有) -
<records><REC r_id_disclaimer="yyyyyyy"> <UID>xxxxxxx</UID> <static_data> <keywords count="4"> <keyword>Brain-</keyword> <keyword>Depres</keyword> <keyword>Acute</keyword> <keyword>Chine</keyword> </keywords> </rec></records> -
预期输出为 2 列:CD_UID 和相关关键字