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.
FOR XML RAW[, ELEMENTS ]
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 & D</DepartmentName> </row> <row> <EmployeeID>105</EmployeeID> <DepartmentName>R & D</DepartmentName> </row> <row> <EmployeeID>160</EmployeeID> <DepartmentName>R & D</DepartmentName> </row> <row> <EmployeeID>243</EmployeeID> <DepartmentName>R & D</DepartmentName> </row> ... |
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; |
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 & D"/> <row EmployeeID="105" DepartmentName="R & D"/> <row EmployeeID="160" DepartmentName="R & D"/> <row EmployeeID="243" DepartmentName="R & D"/> ... |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |