Associando dados relacionais dentro de dados XML
Você pode especificar Métodos de tipo de dados xml em relação à coluna ou variável de tipo de dados xml. Por exemplo, o Método consulta() (Tipo de dados xml) executa o XQuery especificado em relação a uma instância de XML. Quando você cria um XML dessa maneira, é recomendável utilizar um valor de uma coluna que não seja do tipo XML ou uma variável Transact-SQL. Esse processo refere-se à associação de dados relacionais dentro do XML.
Para associar os dados relacionais de um não XML dentro do XML, o Mecanismo de Banco de Dados do SQL Server fornece as seguintes pseudofunções:
Função sql:column() (XQuery) Permite usar os valores de uma coluna relacional na expressão XML DML ou XQuery.
Função sql:variable() (XQuery) . Permite usar o valor de uma variável SQL variável na expressão XML DML ou XQuery.
Você também pode usar essas funções com métodos de tipo de dados xml sempre que quiser expor um valor relacional dentro do XML.
Não é possível usar essas funções para referenciar dados em colunas ou variáveis do xml, tipos de dados CLR definidos pelo usuário, datetime, smalldatetime, text, ntext, sql_variant e tipos de image.
Além disso, essa associação destina-se apenas a finalidades somente leitura. Isto é, você não pode gravar dados em colunas que usam essas funções. Por exemplo, sql:variable ("@x")="alguma expressão" não é permitida.
Exemplo: Consulta entre domínios que usam sql:variable()
Esse exemplo mostra como sql:variable() pode permitir que um aplicativo parametrize uma consulta. O ISBN é passado usando uma variável SQL @ isbn. Substituindo a constante com sql:variable(), a consulta pode ser usada para pesquisar qualquer ISBN e não só aquele cujo 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() pode ser usado de maneira semelhante e oferece benefícios adicionais. Os índices sobre a coluna podem ser usados para eficiência, conforme decidido pelo otimizador de consulta baseado no custo. Além disso, a coluna computada pode armazenar uma propriedade promovida.