Referência da linguagem XQuery (Mecanismo de Banco de Dados)

A Transact-SQL oferece suporte a um subconjunto da linguagem da XQuery usado para consultar o tipo de dados xml. Essa implementação da XQuery está alinhada com o Working Draft de julho de 2004 da XQuery. Essa linguagem está sendo desenvolvida pela World Wide Web Consortium (W3C), com a participação de todos os principais fornecedores de banco de dados e também da Microsoft. Como as especificações da W3C podem passar por revisões futuras antes de se tornarem recomendações da W3C, essa implementação pode ser diferente da recomendação final. Este tópico descreve a semântica e a sintaxe do subconjunto da XQuery com suporte no SQL Server.

Para obter mais informações, consulte W3C XQuery 1.0 Language Specification.

A XQuery é uma linguagem que pode consultar dados XML estruturados ou semi-estruturados. Com o suporte ao tipo de dados xml fornecido no Mecanismo de Banco de Dados, os documentos podem ser armazenados em um banco de dados e consultados usando a XQuery.

A XQuery é baseada na linguagem XPath existente, com suporte adicional para uma melhor iteração, melhores resultados de classificação e com a capacidade de construir o XML necessário. A XQuery opera no modelo de dados XQuery. Essa é uma abstração de documentos XML e de resultados da XQuery podem ser com tipo ou sem tipo. As informações de tipo são baseadas nos tipos fornecidos pela linguagem de esquema XML da W3C. Se nenhuma informação de tipo estiver disponível, a XQuery controlará os dados como sendo sem tipo. Isso é semelhante ao modo como a versão 1.0 do XPath trata o XML.

Para consultar uma instância XML armazenada em uma variável ou coluna de tipo xml, use os Métodos de tipo de dados xml. Por exemplo, é possível declarar uma variável de tipo xml e consultá-la usando o método query() do tipo de dados xml.

DECLARE @x xml
SET @x = '<ROOT><a>111</a></ROOT>'
SELECT @x.query('/ROOT/a')

No exemplo a seguir, a consulta é especificada em relação à coluna Instruções do tipo xml na tabela ProductModel no banco de dados AdventureWorks.

SELECT Instructions.query('declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";         
    /AWMI:root/AWMI:Location[@LocationID=10]
') as Result 
FROM  Production.ProductModel
WHERE ProductModelID=7

A XQuery inclui a declaração de namespace, declare namespaceAWMI=..., e a expressão de consulta, /AWMI:root/AWMI:Location[@LocationID=10].

Observe que a XQuery está especificada na coluna Instruções do tipo xml. O método query() do tipo de dados xml é utilizado para especificar a XQuery.

A tabela a seguir lista os tópicos relacionados que podem ajudar a entender a implementação da XQuery no Mecanismo de Banco de Dados.

Tópico

Descrição

Implementando XML no SQL Server

Explica o suporte para o tipo de dados xmlno Mecanismo de Banco de Dados e os métodos que podem ser utilizados com este tipo. O tipo de dados xml forma o modelo de dados XQuery de entrada em que as expressões XQuery são executadas.

Gerenciando coleções de esquema XML no servidor

Descreve quais podem ser os tipos das instâncias XML armazenadas em um banco de dados. Isso significa que é possível associar uma coleção de esquemas XML com uma coluna do tipo xml. Todas as instâncias armazenadas na coluna são validadas e verificadas quanto ao tipo em relação ao esquema na coleção e fornecem a informação de tipo para a XQuery.

Representação de tipo de dados xml no banco de dados do AdventureWorks

Explica a coluna do tipo xml e as instâncias armazenadas nela, no banco de dados AdventureWorks. A maioria dos exemplos de XQuery está gravada no banco de dados AdventureWorks e nas colunas do tipo xml contidas nela. Compreender as instâncias XML pode ajudar a compreender as consultas.

ObservaçãoObservação

A organização dessa seção é baseada na especificação de working draft da XQuery da World Wide Web Consortium (W3C). Alguns dos diagramas fornecidos nesta seção foram obtidos nessa especificação. Esta seção compara a implementação XQuery da Microsoft com a especificação da W3C, descreve as diferenças entre a XQuery da Microsoft e da W3C e indica quais recursos da W3C não têm suporte. A especificação da W3C está disponível em http://www.w3.org/TR/2004/WD-xquery-20040723.

Nesta seção

Tópico

Descrição

Fundamentos de XQuery

Fornece uma visão geral básica dos conceitos da XQuery, além da avaliação de expressão (contexto estático e dinâmico), atomização, valor booleano efetivo, sistema de tipo XQuery, correspondência de tipo de seqüência e tratamento de erros.

Expressões XQuery

Descreve expressões primárias da XQuery, expressões de caminho, expressões de seqüência, comparações aritméticas e expressões lógicas, construção da XQuery, expressão FLWOR, expressões quantificadas e condicionais e várias expressões em tipos de seqüência.

Módulos e prólogos (XQuery)

Descreve o prólogo da XQuery.

Funções XQuery em tipos de dados xml

Descreve uma lista das funções XQuery que têm suporte.

Operadores XQuery em relação ao tipo de dados xml

Descreve os operadores XQuery que têm suporte.

Exemplos adicionais de XQueries em relação ao tipo de dados xml

Fornece exemplos adicionais de XQuery.