ROW 1:
<a:employees xmlns:a="abc.com/123" xmlns:b="xyz.net/456">
<a:emp>
<a:name>Scott</a:name>
<b:favorites>
<b:color>red</b:color>
<b:color>orange</b:color>
</b:favorites>
</a:emp>
<a:emp>
<a:name>John</a:name>
<b:favorites>
<b:color>blue</b:color>
<b:color>green</b:color>
</b:favorites>
</a:emp>
</a:employees>
Row2:
<a:employees xmlns:a="abc.com/123" xmlns:b="xyz.net/456" xmlns:c="pqr.edu/789>
<a:emp>
<a:name>Tiger</a:name>
<b:favorites>
<c:phone>apple</c:phone>
<c:phone>samsung</c:phone>
<b:color>purple</b:color>
<b:color>pink</b:color>
</b:favorites>
</a:emp>
<a:emp>
<a:name>peter</a:name>
<b:favorites>
<c:phone>nokia</c:phone>
<b:color>violet</b:color>
<b:color>indigo</b:color>
</b:favorites>
</a:emp>
</a:employees>
Над двумя документами xml находятся строки столбца xml xml_col таблицы your_table. Я попытался разобрать столбцы xml в реляционные данные, используя приведенный ниже запрос.
select x.*
from your_table y,
XMLTable(XMLNamespaces('abc.com/123' as "a",
'xyz.net/456 as "b",'pqr.edu/789 as "c"),'*:employees'
Passing y.xml_col
Columns
name varchar2(20) PATH '//*name',
phone varchar2(20) PATH '//*phone',
color varchar2(20) Path '//*:color')x
Я получаю следующее сообщение об ошибке: «XMLTABLE в oracle — несоответствие динамического типа XQuery: ожидаемая одноэлементная последовательность — получена последовательность из нескольких элементов»
Проблема связана с наличием нескольких цветных и телефонных вхождений. Я хочу, чтобы несколько вхождений находились в нескольких строках. Я не возражаю, даже если значение имени повторяется. Выходные данные должны быть аналогичны приведенному ниже формату.
Name Phone Color
Scott red
Scott orange
John blue
John green
Tiger Apple purple
Tiger samsung pink
peter nokia violet
peter indigo
заранее спасибо