Versuchen Sie Folgendes:
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
Da Sie mehrere Zustände haben, sollten Sie einer anderen XML-Tabelle beitreten. Da einige Länder keine Staaten haben, muss es ein linker äußerer Join sein. Ich verwende die alte Methode von (+)
Da ich dies auf 10g versuche und es scheint, gibt es ein Problem mit left outer join
in 10g, aber anscheinend sollte es in 11g
in Ordnung sein .