Coba ini:
select X.COUNTRYNAME, Y.STATENAME
from XMLTEMP
,xmltable('/countries/country'
passing MYDOC
columns COUNTRYNAME varchar2(20) path './name',
STATES xmltype path './states') X,
xmltable('/states/state/name' passing X.STATES
columns STATENAME varchar2(20) path '.') (+) Y
Karena Anda memiliki beberapa status, Anda harus bergabung ke tabel xml lain. Karena beberapa negara tidak memiliki negara bagian maka itu perlu menjadi gabungan luar kiri. Saya menggunakan metode lama (+)
saat saya mencoba ini pada 10g dan sepertinya ada masalah menggunakan left outer join
dalam 10g tetapi tampaknya akan baik-baik saja di 11g
.