Oracle
 sql >> база данни >  >> RDS >> Oracle

XML Oracle:Извличане на множество дъщерни възли

Можете да постигнете желания резултат, като използвате XMLTable() функция:

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)

Резултат:SQLFiddle Demo

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 

Научете повече относно XMLTable() функция.

Забележка :Работейки с версии на Oracle преди 11.2.0.2, можете да срещнете ORA-1780 error (бъг 8545377) при определени типове XML заявки, когато cursor_sharing параметърът е зададен на FORCE или SIMILAR (отхвърлено от 11.2). Настройка на cursor_sharing параметър към EXACT (стойност по подразбиране), ще реши проблема.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. използвайки DBMS_APPLICATION_INFO с Jboss

  2. Динамичното действие опреснява всички отчети в страница

  3. Цел на използване на различни видове PL/SQL колекции в Oracle

  4. Добавяне на име на схема към обект в Spring данни?

  5. Oracle SQL Check ограничение между 2 таблици