我正在尝试查询一个表,其中的列之一在嵌套XML中具有大量数据。我一直在使用EXTRACTVALUE()
函数来显示一对一字段,但是也有许多一对多字段需要使用不同的方法。
经过一番搜索,我发现了XMLTABLE()
函数似乎很合适,但是我收到了一条不一致数据类型的错误消息,即使列数据类型是XMLTYPE也无法解决。
数据库版本为Oracle Database 12c企业版12.1.0.2.0版-64位
以下是XML的示例:
<QuoteData>
<DataCat1>
<ProductDistribution>
<Details>
<Name>Product1</Name>
<Amount>24</Amount>
<Price>100</Price>
</Details>
<Details>
<Name>Product2</Name>
<Amount>50</Amount>
<Price>200</Price>
</Details>
</ProductDistribution>
</DataCat1>
</QuoteData>
我的查询是:
select
q.PROD_NAME,
q.PRICE
from DB_PROD_TBL r, xmltable('/QuoteData'
passing r.PROD_LINE_DATA
columns
PROD_NAME varchar2(50) path '/DataCat1/ProductDistribution/Details/Name',
PRICE number path '/DataCat1/ProductDistribution/Details/Price')q;