Compartir a través de


Enlazar datos relacionales dentro de datos XML

Puede especificar Métodos de tipo de datos xml con una variable de tipo de datos o columna xml. Por ejemplo, query() (método de tipo de datos xml) ejecuta la instrucción XQuery especificada con una instancia XML. Cuando se genera XML de esta manera, se puede utilizar un valor de un tipo de columna que no es XML o una variable Transact-SQL. Este proceso se conoce como enlazar datos relacionales dentro de XML.

Para enlazar datos relacionales no XML dentro de XML, el motor de base de datos de SQL Server proporciona estas seudofunciones:

Estas funciones se pueden utilizar con métodos de tipo de datos xml siempre que se desee exponer un valor relacional dentro de XML.

Estas funciones no se pueden utilizar para hacer referencia a datos en columnas o variables de tipo xml, de tipos definidos por el usuario CLR, datetime, smalldatetime, text, ntext, sql_variant e image.

Asimismo, este enlace es de sólo lectura. En otras palabras, no se pueden escribir datos en las columnas que utilicen estas funciones. Por ejemplo, no se permite sql:variable("@x")="alguna expresión".

Ejemplo: consulta entre dominios mediante sql:variable()

Este ejemplo muestra cómo sql:variable() puede permitir a una aplicación parametrizar una consulta. El ISBN se pasa mediante una variable SQL @isbn. Sustituyendo la constante por sql:variable(), la consulta sirve para buscar cualquier ISBN y no sólo el que corresponde 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() se puede utilizar de manera similar y ofrece otras ventajas. Los índices de la columna favorecen la eficiencia, según lo decida el optimizador de consultas basado en costos. Además, la columna calculada puede almacenar una propiedad promocionada.

Vea también

Conceptos

Otros recursos