Oracle
 sql >> Datenbank >  >> RDS >> Oracle

XMLtable mit Oracle 11g

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 .