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>
上記の 2 つの xml ドキュメントは、テーブル your_table の xml 列 xml_col の行です。以下のクエリを使用して、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
以下のエラー メッセージが表示されます。
この問題は、複数の色と電話が出現することが原因です。複数の出現が複数の行にあることを望みます。名前の値が繰り返されても構いません。出力は次の形式のようになります。
Name Phone Color
Scott red
Scott orange
John blue
John green
Tiger Apple purple
Tiger samsung pink
peter nokia violet
peter indigo
前もって感謝します