Associazione di dati relazionali all'interno di dati XML

Si applica a: SQL Server Azure SQL DatabaseIstanza gestita di SQL di Azure

È possibile specificare metodi con tipo di dati xml per una variabile o colonna con tipo di dati xml. Ad esempio, il metodo query() (tipo di dati xml) esegue la query XQuery specificata in un'istanza XML. Quando si creano dati XML in questo modo, è possibile inserirvi un valore di una colonna di tipo non XML o di una variabile Transact-SQL. Questo processo viene definito associazione di dati relazionali all'interno di dati XML.

Nel Motore di database di SQL Server sono disponibili le pseudofunzioni seguenti che consentono di associare dati relazionali non XML all'interno di dati XML:

È possibile usare queste funzioni con i metodi con tipo di dati xml quando si vuole esporre un valore relazionale all'interno di dati XML.

Non è possibile usare queste funzioni per fare riferimento a dati di colonne o variabili di tipo xml, CLR definito dall'utente, datetime, smalldatetime, text, ntext, sql_variant e image.

Inoltre, questo tipo di associazione è destinata a scopi di sola lettura, ovvero non è possibile scrivere dati nelle colonne che utilizzano queste funzioni. Ad esempio, sql:variable("@x")="some expression" non è consentita.

Esempio: query tra domini tramite sql:variable()

Questo esempio illustra come sql:variable() può consentire a un'applicazione di impostare i parametri di una query. Il codice ISBN viene passato usando una variabile SQL @isbn. Sostituendo la costante con sql:variable() è possibile usare la query per cercare qualsiasi codice ISBN, non solo gli elementi con codice ISBN uguale a 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() ha un uso analogo e offre vantaggi aggiuntivi. Per migliorare l'efficienza è possibile utilizzare indici sulla colonna, in base a quanto stabilito dallo strumento Query Optimizer basato sui costi. Nella colonna calcolata può inoltre essere archiviata una proprietà promossa.

Vedere anche