Prøv dette:
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
Fordi du har flere tilstande, bør du slutte dig til en anden xml-tabel. Da nogle lande ikke har nogen stater, skal det være en venstre ydre sammenslutning. Jeg bruger den gamle metode (+)
da jeg prøver dette på 10g, og det ser ud til, at der er et problem med at bruge left outer join
i 10g, men tilsyneladende skulle det være fint i 11g
.