आप XMLTable()
. का उपयोग करके वांछित परिणाम प्राप्त कर सकते हैं समारोह:
select q.Lastname
, q.Numberid
, s.codeid
, w.LoginId
, q.address
from t1 t
left join xmltable('/begin/entry'
passing t.xml_col
columns LastName varchar2(21) path 'lastname',
NumberId number path 'NumberList/number',
Address varchar2(201) path 'address/addresslist',
CodeList XmlType Path 'NumberList/codelist/code',
Logins XmlType Path 'NumberList/login/user'
) q
on (1=1)
left join xmltable('/code'
passing q.CodeList
columns CodeId number path '.') s
on (1=1)
left join xmltable('/user'
passing q.Logins
columns LoginId varchar2(11) path '.') w
on (1=1)
परिणाम:SQLFiddle डेमो
Lastname Numberid Codeid Loginid Address
---------------------------------------------------------------------------
gordon 100 213 user1 Jl. jalan pelan-pelan ke Bekasi, Indonesia
gordon 100 213 user2 Jl. jalan pelan-pelan ke Bekasi, Indonesia
gordon 100 214 user1 Jl. jalan pelan-pelan ke Bekasi, Indonesia
gordon 100 214 user2 Jl. jalan pelan-pelan ke Bekasi, Indonesia
mark null null null Jl. jalan cepet-cepet ke Jakarta, Indonesia
और जानें
के बारे में XMLTable()
समारोह।
नोट :11.2.0.2 से पहले Oracle रिलीज़ के साथ काम करते हुए, आप ORA-1780 error
का सामना कर सकते हैं (बग 8545377) जब cursor_sharing
. कुछ प्रकार की XML क्वेरी पर पैरामीटर FORCE
. पर सेट है या SIMILAR
(11.2 से शुरू होने वाला पदावनत)। cursor_sharing
सेट करना EXACT
. के लिए पैरामीटर (डिफ़ॉल्ट मान), समस्या का समाधान करेगा।