sql >> Databáze >  >> RDS >> Oracle

XML Oracle:Extrakt z více podřízených uzlů

Požadovaného výsledku můžete dosáhnout pomocí XMLTable() funkce:

select q.Lastname
     , q.Numberid
     , s.codeid
     , w.LoginId
     , q.address
  from t1 t
  left join xmltable('/begin/entry'
                      passing t.xml_col 
                      columns LastName   varchar2(21)  path 'lastname',
                              NumberId   number        path 'NumberList/number',
                              Address    varchar2(201) path 'address/addresslist',
                              CodeList   XmlType       Path 'NumberList/codelist/code',
                              Logins     XmlType       Path 'NumberList/login/user'
                      ) q
    on (1=1) 
  left join xmltable('/code'
                      passing q.CodeList
                      columns CodeId number path '.') s
    on (1=1)
  left join   xmltable('/user'
                        passing q.Logins
                        columns LoginId varchar2(11) path '.') w
    on (1=1)

Výsledek:Ukázka SQLFiddle

Lastname Numberid Codeid Loginid Address 
---------------------------------------------------------------------------
gordon   100      213    user1   Jl. jalan pelan-pelan ke Bekasi, Indonesia 
gordon   100      213    user2   Jl. jalan pelan-pelan ke Bekasi, Indonesia 
gordon   100      214    user1   Jl. jalan pelan-pelan ke Bekasi, Indonesia 
gordon   100      214    user2   Jl. jalan pelan-pelan ke Bekasi, Indonesia 
mark     null     null   null    Jl. jalan cepet-cepet ke Jakarta, Indonesia 

Další informace o XMLTable() funkce.

Poznámka :Při práci s verzemi Oracle před 11.2.0.2 se můžete setkat s ORA-1780 error (chyba 8545377) u určitých typů dotazů XML při cursor_sharing parametr je nastaven na FORCE nebo SIMILAR (od 11.2 ukončeno). Nastavení cursor_sharing parametr na EXACT (výchozí hodnota), vyřeší problém.




  1. python:MYSQLdb. jak získat název sloupců bez provedení select * ve velké tabulce?

  2. MySQL vytváří syntaxi uložené procedury s oddělovačem

  3. mysql:použít SET nebo hodně sloupců?

  4. Instalace Odoo na Mac nemohla provést příkaz LESSC