» Início » Desenvolvimento » Banco de dados e SQL » SQL Server 2005 New Features: Os métodos XML - Parte 1
 
Avaliação: | Publicado em: 17/07/2007
SQL Server 2005 New Features: Os métodos XML - Parte 1


O método Query

O método query permite consultar dados em XML e obter um retorno em XML. Uma consulta XQuery pode  consistir em uma mera especificação de um caminho (como uma simples expressão XPath) ou envolver operadores mais complexos. São apresentados abaixo, alguns exemplos utilizando o método Query.

-- Declarando uma variável do tipo de dados XML
-- Teste do método query

DECLARE @xml XML
SET @xml = '<?xml version="1.0"?>
<Fabricantes>
 <Fabricante Nome="Peugeot">
  <Carro Nome="206"/>
  <Carro Nome="306"/>
  <Carro Nome="406"/>
  <Carro Nome="307"/>
 </Fabricante>
 <Fabricante Nome="Fiat">
  <Carro Nome="Palio"/>
  <Carro Nome="Strada"/>
  <Carro Nome="Marea"/>
  <Carro Nome="Brava"/>
 </Fabricante>
 <Fabricante Nome="GM">
  <Carro Nome="Corsa"/>
  <Carro Nome="Celta"/>
  <Carro Nome="Vectra"/>
  <Carro Nome="Astra"/>
  <Carro Nome="Montana"/>
 </Fabricante>
 <Fabricante Nome="Ford">
  <Carro Nome="Fiesta"/>
  <Carro Nome="Focus"/>
  <Carro Nome="Mondeo"/>
  <Carro Nome="Eco Sport"/>
 </Fabricante>
</Fabricantes>'

-- Aplicação simples do método query (apenas uma expressão XPath)
-- Retorna a relação de todos os carros da GM

SELECT @xml.query('/Fabricantes/Fabricante[@Nome="GM"]/Carro') AS XQuery

-- Aplicação do método query com uma expressão XQuery simples
-- Retorna a relação de todos os carros alterando o elemento "Carro" pelo elemento "Veiculo"

SELECT @xml.query(
'for $carro in /Fabricantes/Fabricante/Carro
 return
 <Veiculo>{$carro/@Nome}</Veiculo>'
) AS XQuery

-- Aplicação do método query mais complexa
-- Retorna o nome dos fabricantes e o total de carros

SELECT @xml.query(
'for $fabricante in /Fabricantes/Fabricante
 return
 <Fabricante Nome="
{$fabricante/@Nome}"
 Carros="{count($fabricante/Carro)}"/>'
) AS XQuery

-- Aplicação do método query com uma expressão XQuery mais complexa
-- Retorna a relação de todos os carros e seus fabricantes ordenados por nome
-- Renomeia o nome de alguns elementos

SELECT @xml.query(
'for $Marca in /Fabricantes/Fabricante,
    $Veiculo in
$Marca/Carro/@Nome
 order by $Marca/@Nome, $Veiculo
 return
    <Automovel Fabricante="
{$Marca/@Nome}">{$Veiculo}</Automovel>
    '
) AS XQuery

-- Aplicação do método query com uma expressão XQuery complexa
-- Retorna a relação de todos os carros que contenham 5 letras
-- Ordena por ordem de marca

SELECT @xml.query(
'for $Marca in /Fabricantes/Fabricante,
    $Veiculo in
$Marca/Carro/@Nome
    where string-length($Veiculo) = 5
 order by
$Marca/@Nome, $Veiculo
 return
    <Automovel Fabricante="
{$Marca/@Nome}">{$Veiculo}</Automovel>
    '
) AS XQuery

-- Adicionando um elemento raiz a uma consulta XQuery simples (XPath)
SELECT @xml.query(
 '<CarrosGM>{/Fabricantes/Fabricante[@Nome="GM"]/Carro[1]}</CarrosGM>') AS XQuery

Este artigo é a parte 1 de 2 da seguinte série:
  1. SQL Server 2005 New Features: Os métodos XML - Parte 1
  2. SQL Server 2005 New Features: Os métodos XML - Parte 2

Prático! Objetivo! Claro! Linguagem Simples e estruturada, Excelente didática! Material muito bem planejado e blilhantemente elaborado!!!