Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

XMLtable com Oracle 11g


Tente isto:
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

Como você tem vários estados, deve juntar-se a outra tabela xml. Como alguns países não têm estados, então precisa ser uma junção externa esquerda. Estou usando o método antigo de (+) como estou tentando isso em 10g e parece que há um problema ao usar left outer join em 10g, mas aparentemente deve ficar bem em 11g .