2017-08-13 92 views
0
SELECT employeeName 
    FROM XMLTABLE (xmlnamespaces (
         'http://urn:global:cs:common' AS "tns0") , '/tns0:organization/tns0:employee' PASSING XMLType 
         ((select a.EmployeeXML from impp.Employee a)) 
         COLUMNS 
         employeeName NUMBER PATH 'tns0:EmployeeDetails/@value' 
         ) xmlT; 

它显示了一个异常SQL查询XML类型

ORA-01427:单行子查询返回不止一行。

回答

0

当您将常规笛卡尔产品写入xmltable(...)时,Oracle具有侧面视图连接的优点。

试试这样说:

SELECT xmlT.employeeName 
FROM impp.Employee A 
    XMLTABLE(
     xmlnamespaces('http://urn:global:cs:common' AS "tns0"), 
     '/tns0:organization/tns0:employee' 
     PASSING XMLType(A.EmployeeXML) 
     COLUMNS 
      employeeName NUMBER PATH 'tns0:EmployeeDetails/@value' 
    ) xmlT; 

注:

  • 看来,你的impp.Employee.EmployeeXML是一个CLOB列。这就是为什么这个代码可以正常工作。如果EmployeeXML是XmlType列,请将“类型转换”保留为XmlType。

而且因为你是新来stackoverflow.com ...

  • 如果代码不工作,评论所产生的错误,我会改正。
  • 如果代码正常工作,请不要忘记单击复选标记将答案标记为已接受。