Freigeben über


Einbinden relationaler Daten in XML-Daten

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Sie können XML-Datentypmethoden für eine XML-Datentypvariable oder -spalte angeben. So führt die query()-Methode (Abfragemethode) (XML-Datentyp) beispielsweise die angegebene XQuery für eine XML-Instanz aus. Beim Erstellen von XML-Code auf diese Art sollten Sie einen Wert aus einer Nicht-XML-Typspalte oder eine Transact-SQL-Variable einbringen. Dieser Prozess wird als Einbinden relationaler Daten in XML bezeichnet.

Um relationale Nicht-XML-Daten in XML zu binden, bietet die SQL Server-Datenbank-Engine folgende Pseudofunktionen:

Sie können diese Funktionen jedes Mal mit XML-Datentypmethoden verwenden, wenn Sie einen relationalen Wert in XML verfügbar machen möchten.

Diese Funktionen können nicht für den Verweis auf Daten in Spalten oder Variablen der benutzerdefinierten CLR-Typen des Datentyps XML sowie der Typen datetime, smalldatetime, text, ntext, sql_variant und image verwendet werden.

Das Einbinden ist außerdem nur zur Leseberechtigung. Deshalb können Sie in Spalten keine Daten schreiben, die diese Funktion verwenden. Zum Beispiel ist sql:variable("@x")="some expression" nicht zulässig.

Beispiel: Domänenübergreifende Abfrage mithilfe von sql:variable()

In diesem Beispiel wird gezeigt, wie eine Anwendung mit sql:variable() eine Abfrage parametrisieren kann. Die ISBN wird mit der SQL-Variablen @isbn übergeben. Durch Ersetzen der Konstante durch sql:variable() kann die Abfrage für die Suche nach einer beliebigen ISBN verwendet werden, nicht nur für die Suche nach der ISBN 0-7356-1588-2.

DECLARE @isbn VARCHAR(20)  
SET     @isbn = '0-7356-1588-2'  
SELECT  xCol  
FROM    T  
WHERE   xCol.exist ('/book/@ISBN[. = sql:variable("@isbn")]') = 1  

sql:column() kann auf ähnliche Weise verwendet werden und bietet weitere Vorteile. Indizes für die Spalte können aus Effizienzgründen verwendet werden, was durch den kostenbasierten Abfrageoptimierer entschieden wird. Außerdem kann die berechnete Spalte zum Speichern einer heraufgestuften Eigenschaft verwendet werden.

Weitere Informationen