Compartilhar via


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:

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.

Consulte também

Conceitos

Outros recursos