我需要通過從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 –