Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » XML in der Datenbank » XML in der Datenbank benutzen » Abfrageergebnisse als XML erhalten

 

FOR XML RAW verwenden

Wenn Sie FOR XML RAW in einer Abfrage angeben, wird jede Zeile als ein <row>-Element dargestellt, und jede Spalte ist ein Attribut dieses <row>-Elements.

Syntax
FOR XML RAW[, ELEMENTS ]
Parameter

ELEMENTS   Fordert FOR XML RAW auf, im Ergebnis ein XML-Element anstatt eines Attributs für jede Spalte zu generieren. Wenn NULL vorhanden ist, wird das Element im generierten XML-Dokument weggelassen. Die folgende Abfrage generiert <EmployeeID>- und <DepartmentName>-Elemente:

SELECT Employees.EmployeeID, Departments.DepartmentName
FROM Employees JOIN Departments
   ON Employees.DepartmentID=Departments.DepartmentID
FOR XML RAW, ELEMENTS;

Diese Abfrage liefert das folgende Ergebnis:

<row>
   <EmployeeID>102</EmployeeID>
   <DepartmentName>R &amp; D</DepartmentName>
</row>
<row>
   <EmployeeID>105</EmployeeID>
   <DepartmentName>R &amp; D</DepartmentName>
</row> 
<row>
   <EmployeeID>160</EmployeeID>
   <DepartmentName>R &amp; D</DepartmentName>
</row>
<row>
   <EmployeeID>243</EmployeeID>
   <DepartmentName>R &amp; D</DepartmentName>
</row>
...
Verwendungszweck

Daten in BINARY-, LONG BINARY-, IMAGE- und VARBINARY-Spalten werden automatisch im base64-kodierten Format zurückgegeben, wenn Sie eine Abfrage ausführen, die FOR XML RAW enthält.

Standardmäßig wird NULL im Ergebnis weggelassen. Dieses Verhalten wird von der Option "for_xml_null_treatment" gesteuert.

Hinweise darüber, wie NULL in Abfragen zurückgegeben wird, die die FOR XML-Klausel enthalten, finden Sie unter FOR XML und NULL.

FOR XML RAW gibt kein wohlgeformtes XML-Dokument zurück, weil das Dokument keinen einzelnen Stammknoten hat. Wenn ein <root>-Element erforderlich ist, können Sie eines einfügen, indem Sie die XMLELEMENT-Funktion verwenden. Zum Beispiel:

SELECT XMLELEMENT( NAME root,
                   (SELECT EmployeeID AS id, GivenName AS name
                   FROM Employees FOR XML RAW));

Weitere Hinweise zur Funktion XMLELEMENT finden Sie unter XMLELEMENT-Funktion [Zeichenfolge].

Die Attribut- oder Elementnamen, die im XML-Dokument verwendet werden, können durch die Angabe von Aliasnamen geändert werden. Die folgende Abfrage benennt das ID-Attribut in "product_ID" um:

SELECT ID AS product_ID
FROM Products
WHERE Color='black'
FOR XML RAW;

Diese Abfrage liefert das folgende Ergebnis:

<row product_ID="302"/>
<row product_ID="400"/>
<row product_ID="501"/>
<row product_ID="700"/>

Die Reihenfolge der Ergebnisse hängt vom Plan ab, den der Optimierer ausgewählt hat, außer Sie fordern etwas anderes an. Wenn Sie wollen, dass die Ergebnisse in einer bestimmten Reihenfolge angezeigt werden, müssen Sie eine ORDER BY-Klausel in die Abfrage aufnehmen, wie z.B.:

SELECT Employees.EmployeeID, Departments.DepartmentName
FROM Employees JOIN Departments
   ON Employees.DepartmentID=Departments.DepartmentID
ORDER BY EmployeeID
FOR XML RAW;
Beispiel

Nehmen wir an, Sie wollen Informationen darüber abrufen, zu welcher Abteilung ein Mitarbeiter gehört; und zwar folgendermaßen:

SELECT Employees.EmployeeID, Departments.DepartmentName
FROM Employees JOIN Departments
   ON Employees.DepartmentID=Departments.DepartmentID
FOR XML RAW;

Das folgende XML-Dokument wird zurückgegeben:

<row EmployeeID="102" DepartmentName="R &amp; D"/>
<row EmployeeID="105" DepartmentName="R &amp; D"/>
<row EmployeeID="160" DepartmentName="R &amp; D"/>
<row EmployeeID="243" DepartmentName="R &amp; D"/>
...