आपके अपडेट किए गए एक्सएमएल में नेमस्पेस है, जो अंततः इस मुद्दे को प्रकट करता है। आपको निर्दिष्ट करना होगा XML निष्कर्षण के भाग के रूप में नाम स्थान , जो XMLTable दृष्टिकोण के साथ सरल है; इस मामले में आप इसे केवल डिफ़ॉल्ट नाम स्थान के रूप में मान सकते हैं:
select itc.element_name, x.user_classification3
from i_transaction itc
cross join xmltable(
xmlnamespaces(default 'http://xmlns.oracle.com/apps/otm'),
'/TenderOffer/Shipment/RATE_OFFERING/RATE_OFFERING_ROW'
passing xmltype(itc.xml_blob)
columns user_classification3 varchar2(10) path 'USER_CLASSIFICATION3'
) x
where itc.i_transaction_no = 31553115
and rownum = 1;
ELEMENT_NA USER_CLASS
---------- ----------
dummy ZXF
या XMLQuery के साथ:
select itc.element_name, xmlquery(
'declare default element namespace "http://xmlns.oracle.com/apps/otm"; (: :)
/TenderOffer/Shipment/RATE_OFFERING/RATE_OFFERING_ROW/USER_CLASSIFICATION3/text()'
passing xmltype(itc.xml_blob)
returning content
) x
from i_transaction itc
where itc.i_transaction_no = 31553115
and rownum = 1;
ELEMENT_NA X
---------- --------------------------------------------------------------------------------
dummy ZXF
यदि आप बहिष्कृत extractvalue()
. का उपयोग जारी रखना चाहते हैं फ़ंक्शन के रूप में आप नेमस्पेस को एक तर्क के रूप में भी आपूर्ति कर सकते हैं, फिर से जैसा कि में दिखाया गया है दस्तावेज़ीकरण
:
select itc.element_name,
extractvalue(xmltype(xml_blob),
'/TenderOffer/Shipment/RATE_OFFERING/RATE_OFFERING_ROW/USER_CLASSIFICATION3/text()',
'xmlns="http://xmlns.oracle.com/apps/otm"')
from i_transaction itc where itc.i_transaction_no = 31553115 and rownum = 1;