मैं डेटा को चरणों में निकालूंगा:
SELECT xobjects.id, xobjects.name, xrows.index_id,
xrows.provider_id_description, xrows.provider_id
FROM XMLTABLE(
'/AuxiliaryType/AuxiliaryObject'
PASSING xmltype(
'<AuxiliaryType>
<AuxiliaryObject id="1" NAME="Provider_P107">
<Row>
<Index_id>1</Index_id>
<Provider_ID_description>GNRCN</Provider_ID_description>
<Provider_ID>GNRCN</Provider_ID>
</Row>
<Row>
<Index_id>2</Index_id>
<Provider_ID_description>EGUT12</Provider_ID_description>
<Provider_ID>EGUT12 </Provider_ID>
</Row>
</AuxiliaryObject>
<AuxiliaryObject id="2" NAME="Provider_P108">
<Row>
<Index_id>1</Index_id>
<Provider_ID_description>GNRCN</Provider_ID_description>
<Provider_ID>GNRCN</Provider_ID>
</Row>
<Row>
<Index_id>2</Index_id>
<Provider_ID_description>EGUT</Provider_ID_description>
<Provider_ID>EGUT </Provider_ID>
</Row>
</AuxiliaryObject>
</AuxiliaryType>'
)
COLUMNS
name VARCHAR2(30) PATH '@NAME',
id VARCHAR2(10) PATH '@id',
xrows XMLTYPE PATH 'Row') xobjects,
XMLTABLE(
'/Row'
PASSING xobjects.xrows
COLUMNS
index_id VARCHAR2(10) PATH 'Index_id',
provider_id_description VARCHAR2(30) PATH 'Provider_ID_description',
provider_id VARCHAR2(30) PATH 'Provider_ID') xrows;
XMLTable xobjects
प्रत्येक AuxiliaryObject
. शामिल है AuxiliaryType
. के अंतर्गत उदाहरण , आपके मूल XML पाठ से। इसमें विशेषताएं हैं name
और id
, साथ ही नेस्टेड पंक्तियों वाला एक उप-XMLType. दूसरा XMLTable, xrows
, इसका विस्तार करता है ताकि तत्वों को निकाला जा सके। XML प्रकारों के जुड़ने और पास होने से वह पदानुक्रम बनता है जो आपको मनचाहा आउटपुट देता है:
ID NAME INDEX_ID PROVIDER_ID_DESCRIPTION PROVIDER_ID
---------- ------------------------------ ---------- ------------------------------ ------------------------------
1 Provider_P107 1 GNRCN GNRCN
1 Provider_P107 2 EGUT12 EGUT12
2 Provider_P108 1 GNRCN GNRCN
2 Provider_P108 2 EGUT EGUT
यह SQL डेवलपर में 11.2.0.3 डेटाबेस के विरुद्ध काम करता है, और SQL Fiddle ।
इस उत्तर के पहले के सीटीई-आधारित संस्करण ने SQL डेवलपर में भी काम किया लेकिन SQL Fiddle ORA-600 त्रुटि मिली; कि प्रश्न में आपके पास जो समस्या थी, उसके साथ यह भी पता चलता है कि शायद SQL Fiddle 11gR2 के एक अनपेक्षित, या कम से कम अलग तरह से पैच किए गए संस्करण पर है, जिसमें XML हैंडलिंग में बग हैं।