Grundlegende Syntax der FOR XML-Klausel

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Der FOR XML-Modus kann RAW, AUTO, EXPLICIT oder PATH lauten. Er bestimmt die Form des erhaltenen XML.

Wichtig

Die XMLDATA-Direktive zur FOR XML-Option ist veraltet. Verwenden Sie XSD-Generierung für RAW- und AUTO-Modus. Es gibt keinen Ersatz für die XMLDATA-Direktive im EXPLICIT-Modus. Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

Syntax

Im Folgenden wird die Basissyntax der FOR-Klausel (Transact-SQL) beschrieben.

[ FOR { BROWSE | <XML> } ]
<XML> ::=
XML
    {
      { RAW [ ('ElementName') ] | AUTO }
        [
           <CommonDirectives>
           [ , { XMLDATA | XMLSCHEMA [ ('TargetNameSpaceURI') ]} ]
           [ , ELEMENTS [ XSINIL | ABSENT ]
        ]
      | EXPLICIT
        [
           <CommonDirectives>
           [ , XMLDATA ]
        ]
      | PATH [ ('ElementName') ]
        [
           <CommonDirectives>
           [ , ELEMENTS [ XSINIL | ABSENT ] ]
        ]
     }

<CommonDirectives> ::=
   [ , BINARY BASE64 ]
   [ , TYPE ]
   [ , ROOT [ ('RootName') ] ]

Syntax für Azure SQL-Datenbank

Eine Dokumentation zur SELECT...FOR XML-Klausel, die auch für Azure SQL-Datenbank gilt, finden Sie unter FOR XML (SQL Server).

Argumente

RAW [('ElementName')]

Verwendet das Abfrageergebnis und wandelt jede Zeile im Resultset in ein XML-Element mit einem generischen Bezeichner (<row />) als Elementtag um. Sie können optional einen Namen für das Zeilenelement angeben, wenn Sie diese Direktive verwenden. Der resultierende XML-Code verwendet das angegebene ElementName Zeilenelement, das für jede Zeile generiert wird. Weitere Informationen finden Sie unter Verwenden des RAW-Modus mit FOR XML.

AUTO

Gibt Abfrageergebnisse in einer einfachen, geschachtelten XML-Struktur zurück. Jede Tabelle in der FROM-Klausel, aus der mindestens eine Spalte in der SELECT-Klausel aufgeführt ist, wird als ein XML-Element dargestellt. Die in der SELECT-Klausel aufgelisteten Spalten werden den entsprechenden Elementattributen zugeordnet. Weitere Informationen finden Sie unter Verwenden des AUTO-Modus mit FOR XML.

EXPLICIT

Gibt an, dass die Form der sich ergebenden XML-Struktur explizit definiert wird. In diesem Modus müssen die Abfragen jedoch auf eine bestimmte Weise geschrieben werden, sodass zusätzliche Informationen über die gewünschte Schachtelung explizit angegeben werden. Weitere Informationen finden Sie unter Verwenden des EXPLICIT-Modus mit FOR XML.

PFAD

Stellt ein einfacheres Verfahren zum Mischen von Elementen und Attributen bereit und führt zusätzliche Schachtelung für die Darstellung komplexer Eigenschaften ein. Sie können Abfragen im FOR XML EXPLICIT-Modus zum Erstellen dieser Art von XML aus einem Rowset verwenden, der PATH-Modus stellt jedoch eine einfachere Alternative zu den möglicherweise aufwendigen Abfragen im EXPLICIT-Modus bereit. Der PATH-Modus ermöglicht in Kombination mit der Möglichkeit, verschachtelte FOR XML-Abfragen zu schreiben und die TYPE-Direktive zum Zurückgeben von Instanzen des Typs xml zu verwenden, das Schreiben von Abfragen mit geringerer Komplexität. Er bietet eine Alternative zum Schreiben der meisten Abfragen im EXPLICIT-Modus. Standardmäßig generiert der PATH-Modus einen <row>-Elementwrapper für jede Zeile im Resultset. Optional können Sie einen Elementnamen angeben. Wenn Sie einen Elementnamen angeben, wird der angegebene Name als Wrapperelementname verwendet. Wenn Sie eine leere Zeichenfolge (FOR XML PATH (''))angeben, wird kein Wrapperelement generiert. Weitere Informationen finden Sie unter Verwenden des PATH-Modus mit FOR XML.

MLDATA

Gibt an, dass ein XML XDR-Inlineschema zurückgegeben werden soll. Das Schema wird dem Dokument als Inlineschema vorangestellt. Ein funktionierendes Beispiel finden Sie unter Verwenden des RAW-Modus mit FOR XML.

XMLSCHEMA

Gibt ein W3C XML-Inlineschema (XSD) zurück. Optional können Sie einen Zielnamespace-URI angeben, wenn Sie diese Direktive angeben. Auf diese Weise wird der angegebene Namespace im Schema zurückgegeben. Weitere Informationen finden Sie unter Generieren eines XSD-Inlineschemas. Ein funktionierendes Beispiel finden Sie unter Verwenden des RAW-Modus mit FOR XML.

ELEMENTE

Wenn die Option ELEMENTS angegeben ist, werden die Spalten als Teilelemente zurückgegeben. Andernfalls werden sie XML-Attributen zugeordnet. Diese Option wird nur in den Modi RAW, AUTO und PATH unterstützt. Optional können Sie XSINIL oder ABSENT angeben, wenn Sie diese Direktive angeben. XSINIL gibt an, dass ein Element, dessen xsi:nil -Attribut auf True festgelegt ist, für NULL-Spaltenwerte erstellt wird. Standardmäßig werden keine Elemente für NULL-Werte erstellt. Dies gilt auch, wenn ABSENT zusammen mit ELEMENTS angegeben wird. Ein funktionierendes Beispiel finden Sie unter Verwenden des RAW-Modus mit FOR XML und unter Verwenden des AUTO-Modus mit FOR XML.

BINARY BASE64

Wenn die Option BINARY Base64 angegeben ist, werden alle von der Abfrage zurückgegebenen Binärdaten im Base64-codierten Format dargestellt. Zum Abrufen von Binärdaten mithilfe des Modus RAW oder EXPLICIT muss diese Option angegeben werden. Standardmäßig werden Binärdaten im AUTO-Modus als Verweis zurückgegeben. Ein funktionierendes Beispiel finden Sie unter Verwenden des RAW-Modus mit FOR XML.

TYP

Gibt an, dass die Abfrage die Ergebnisse als xml -Typ zurückgibt. Weitere Informationen finden Sie unter TYPE Directive in FOR XML Queries.

ROOT [('RootName')]

Gibt an, dass dem resultierenden XML ein einzelnes Element auf oberster Ebene hinzugefügt wird. Optional können Sie den zu generierenden Stammelementnamen angeben. Der Standardwert ist <root>.

Siehe auch