XMLtable с Oracle 11g

Вот пример таблицы:

create table xmltemp (mydoc xmltype)

Вот небольшой документ XML для этого:

insert into xmltemp values (
xmltype
('<?xml version="1.0"?>
<countries>
  <country>
    <name>Canada</name>
  </country>
  <country>
    <name>US</name>
    <states>
      <state>
        <name>Washington</name>
        <name>Oregon</name>        
      </state>
    </states>
  </country>
</countries>
')
)  

Обратите внимание, что в Канаде нет элемента «штатов», а в США - нет. Я пытаюсь получить эти результаты запроса (порядок и форматирование не важны):

Canada,
US,Washington
US,Oregon

Когда я выполняю это, я вижу и Канаду и США в результате:

select
countryname
from xmltemp,
xmltable('/countries/country' passing mydoc
   columns countryname varchar2(10) path 'name') 

Когда я делаю это, я получаю оба состояния:

select
statename
from xmltemp,
xmltable('/countries/country/states/state/name' passing mydoc
   columns statename   varchar2(20) path '.') c

Я попытался это сделать, чтобы получить как страну, так и штаты, но оракулу не нравится синтаксис «..»:

select
statename
from xmltemp,
xmltable('/countries/country/states/state/name' passing mydoc
   columns statename   varchar2(20) path '.',
           countryname varchar2(20) path '../../../name') c

Вот ошибка:

ORA-19110: unsupported XQuery expression

Когда я пытаюсь это сделать, я получаю ошибку «multi-item» из-за двух состояний:

select
countryname,
statename
from xmltemp,
xmltable('/countries/country' passing mydoc
   columns countryname varchar2(10) path 'name',
           statename   varchar2(20) path 'states/state/name') c

Вот эта ошибка:

ORA-19279: XPTY0004 - XQuery dynamic type mismatch: expected singleton 
sequence - got multi-item sequence

Какой запрос даст мне желаемый результат:

Canada,
US,Washington
US,Oregon

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос