これを試してください:
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
では問題ないようです。 。