Zkuste toto:
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
Protože máte více stavů, měli byste se připojit k jiné xml tabulce. Protože některé země nemají žádné státy, musí to být levý vnější spoj. Používám starou metodu (+)
když to zkouším na 10g a zdá se, že je problém s použitím left outer join
v 10g, ale zřejmě by to mělo být v pořádku v 11g
.