2016-09-10 3 views
0

Bitte führen Sie mich, wie Sie unter Ausgabe mit Oracle SQL-Abfrage erhalten und Ausgabe sollte in einer Zeile und einer Spalte (einzelne Zeile Spalte) sein.XML-Ausgabe mit Oracle sql

<Row><Cell><Data ss:Type="String">SMITH</Data></Cell><Cell><Data ss:Type="String">800</Data></Cell></Row> <Row><Cell><Data ss:Type="String">ALLEN</Data></Cell><Cell><Data ss:Type="String">1600</Data></Cell></Row> 

ich versuchte SQL-Anweisung, aber ich bin immer mehrere Zeilen.

select 
'<Row>'||XMLELEMENT("Cell",XMLELEMENT("Data",xmlattributes('String' as "ss:Type"),ename))|| 
    XMLELEMENT("Cell",XMLELEMENT("Data",xmlattributes('String' as "ss:Type"),sal)) ||'</Row>' as "Result" from emp; 

Vielen Dank im Voraus

Antwort

0

Sie können die XML mit dem Standard-Paket DBMS_XMLGEN.GETXML ​​ erzeugen.

Hinweis: -

Sie sollten eine ausreichende Berechtigung um das Paket auszuführen. Wenn Sie eine lokale Oracle-Datenbank mit Administratorzugriff verwenden, sollten Sie kein Problem haben.

Syntax: -

select dbms_xmlgen.getxmltype(Your select query here) from dual; 

Beispiel: -

SELECT dbms_xmlgen.getxmltype('select first_name, last_name, phone_number, email from employees where employee_id in (100,101)') 
FROM dual; 

Wenn Sie nur eine Zeile in der Ausgabe benötigen, können Sie rownum = 1 in where-Klausel verwenden zu begrenzen die Anzahl der Zeilen in der Ausgabe.

Convert SQL result to XML using standard package

+0

OP scheint auch Attribute zu müssen. Unterstützt Ihr Beispiel diesen Fall? –

+0

Es gibt den Attributtyp nicht zurück. DBMS_XMLGEN.GETXMLTYPE generiert jedoch das XML-Dokument und gibt es als sys.XMLType zurück. Ich glaube, dass Sie keine Ausgabe als XML als einen eigenen Typ eingeben müssen. Sie können ein Schema (XSD) definieren und die Daten in einem anderen Prozess konsumieren. – notionquest

0

Verwenden XMLAGG() die Zeilen aggregieren:

SELECT XMLAGG(
      XMLELEMENT(
      "Row", 
      XMLELEMENT(
       "Cell", 
       XMLELEMENT("Data",xmlattributes('String' as "ss:Type"),ename) 
      ), 
      XMLELEMENT(
       "Cell", 
       XMLELEMENT("Data",xmlattributes('String' as "ss:Type"),sal) 
      ) 
     ) 
     ).getClobVal() AS "Result" 
FROM emp;