我需要通过从oracle 11g中的clob数据中提取xml元素名来生成报告。产品表将其属性存储为clob XML,它可以在其上存储多个属性。以下列格式存储的值:
200.0Manufacturer1235 / V
这里我需要一个报告,其中应包含Rebate,SellerOwnerID,SellerOwnerValue等属性名称。我可以提取clob数据,但我不知道如何获取属性名称列表。
答案 0 :(得分:0)
执行以下查询以获得所需的输出
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')))
答案 1 :(得分:0)
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()'
);