Associando dados relacionais dentro de dados XML
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Especifique Métodos de Tipo de Dados xml em uma variável ou coluna de tipo de dados xml. Por exemplo, o Método query() (tipo de dados xml) executa o XQuery especificado em uma instância 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 XQuery ou XML DML.
Função sql:variable() (XQuery). Permite usar o valor de uma variável SQL variável na expressão XML DML ou XQuery.
Use essas funções com métodos de tipo de dados xml sempre que desejar expor um valor relacional dentro do XML.
Não é possível usar essas funções para referenciar dados em colunas ou variáveis dos tipos xml, tipos CLR definidos pelo usuário, datetime, smalldatetime, text, ntext, sql_variant e 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 é permitido.
Exemplo: Consulta entre domínios que usam sql:variable()
Este 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 por sql:variable() , a consulta pode ser usada para pesquisar qualquer ISBN e não apenas 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 outros benefícios. 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.