Опитайте това:
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
Тъй като имате няколко състояния, трябва да се присъедините към друга xml таблица. Тъй като някои държави нямат държави, то трябва да бъде ляво външно присъединяване. Използвам стария метод на (+)
тъй като опитвам това на 10g и изглежда, че има проблем с използването на left outer join
в 10g, но очевидно би трябвало да е добре в 11g
.