对于包含名称空间的xml列,预期的单吨序列-got多项序列

时间:2014-09-11 02:20:54

标签: sql xml xml-parsing xsd for-xml-path

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文档是表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

我收到以下错误消息 &#34; oracle中的XMLTABLE - XQuery动态类型不匹配:预期的单例序列 - 得到多项序列&#34;

问题是由于有多种颜色和手机出现。我希望多个出现在多行中。即使名称值重复,我也不介意。 输出应类似于以下格式。

   Name     Phone       Color
   Scott                red
   Scott                orange
   John                 blue
   John                 green
   Tiger    Apple       purple
   Tiger    samsung     pink
   peter    nokia       violet
   peter                indigo

提前致谢

0 个答案:

没有答案