2017-08-13 3 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; 

eine AusnahmeSQL Query for XML Typ

ORA-01427 zeigt: einreihige Unterabfrage gibt mehr als eine Zeile.

Antwort

0

Oracle hat diese nette Eigenschaft, eine seitliche Ansicht zu erstellen, wenn Sie ein normales kartesisches Produkt an eine xmltable(...) schreiben.

Versuchen Sie es so:

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; 

Hinweise:

  • Es scheint, dass Ihr impp.Employee.EmployeeXML eine CLOB-Spalte ist. Aus diesem Grund funktioniert dieser Code in Ordnung. Wenn die EmployeeXML stattdessen eine XmlType-Spalte ist, lassen Sie einfach die "Typumwandlung" zu XmlType aus der Abfrage heraus.

Und da Sie neu in stackoverflow.com ...

  • Wenn der Code nicht funktioniert, Kommentar zu den daraus resultierenden Fehler und ich werde es korrigieren.
  • Wenn der Code funktioniert, vergessen Sie nicht, die Antwort als akzeptiert zu markieren, indem Sie auf das Häkchen klicken.