我需要通过从oracle 11g中的clob数据中提取xml元素名称来生成报告。产品表将其属性存储为clob XML,其中可以存储多个属性。下面的格式存储在Value:如何从oracle中提取clob XML属性名称列表
200.0Manufacturer1235/V
在这里,我需要它应该包含属性名称,比如回扣,SellerOwnerID,SellerOwnerValue报告。我可以提取clob数据,但我不知道如何获取属性名称列表。
我需要通过从oracle 11g中的clob数据中提取xml元素名称来生成报告。产品表将其属性存储为clob XML,其中可以存储多个属性。下面的格式存储在Value:如何从oracle中提取clob XML属性名称列表
200.0Manufacturer1235/V
在这里,我需要它应该包含属性名称,比如回扣,SellerOwnerID,SellerOwnerValue报告。我可以提取clob数据,但我不知道如何获取属性名称列表。
执行下面的查询,以获得所需的输出
SELECT EXTRACTVALUE (COLUMN_VALUE, '/attr/@name') attribute,
EXTRACTVALUE (COLUMN_VALUE, '/attr/double') double,
EXTRACTVALUE (COLUMN_VALUE, '/attr/string') string
FROM TABLE(XMLSEQUENCE(EXTRACT(XMLTYPE('<attrs><attr name="Rebate"><double>200.0</double></attr><attr name="SellerOwnerID"><string>Manufacturer</string></attr><attr name="SellerOwnerValue"><string>1235/V</string></attr></attrs>'),'/attrs/attr')))
由于Dinesh,用这种方式写查询存在问题。我将解释复杂性。表名称产品列名称属性。列属性可以存储具有多个属性的XML,但这不是固定的。对于我附加的示例,它具有3个属性,但其他产品可以具有40-50个属性。我们可以写一些通用的吗? –
可以请你分享一下复杂的xml –
我附带的XML是从DB clob列中提取的。实际的XML具有不同的结构集合。当我们处理产品XML时,我们以附加的XML格式保存产品属性。就另一个例子而言,我附加了另一个来自不同产品的样本。 –
with abc as (select * from
(select 'Prod1' prod_name,xmltype('<attrs><attr name="Rebate"><double>200.0</double></attr><attr name="SellerOwnerID"><string>Manufacturer</string></attr><attr name="SellerOwnerValue"><string>1235/V</string></attr></attrs>') xxx from dual
union all
select 'Prod2',xmltype('<attrs><attr name="Rebate"><double>200.0</double></attr><attr name="SellerOwnerID"><string>Manufacturer</string></attr><attr name="SellerOwnerValue"><string>1235/V</string></attr><attr name="Rebate"><double>200.0</double></attr><attr name="SellerOwnerID"><string>Manufacturer</string></attr><attr name="SellerOwnerValue"><string>1235/V</string></attr></attrs>') from dual
))
select prod_name,attr_name,attr_type,attr_value from abc,xmltable('attrs/attr'
passing abc.xxx
columns
attr_name varchar2(30) path '@name',
attr_type varchar2(30) path '*/name()',
attr_value varchar2(30) path '*/text()'
);
没有出现在正确的方法,所以我已经上传的图片XML。 –
请给我示例XML –