Probeer dit:
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
Omdat je meerdere statussen hebt, moet je lid worden van een andere XML-tabel. Aangezien sommige landen geen staten hebben, moet het een left outer join zijn. Ik gebruik de oude methode van (+)
aangezien ik dit op 10g probeer en het lijkt erop dat er een probleem is met het gebruik van left outer join
in 10g maar blijkbaar zou het goed moeten zijn in 11g
.