» Início » Desenvolvimento » Banco de dados e SQL » SQL Server 2005 New Features: A cláusula FOR XML
 
Avaliação: | Publicado em: 31/01/2007
SQL Server 2005 New Features: A cláusula FOR XML


FOR XML PATH

Essa variação da cláusula FOR XML é nova no SQL Server 2005 e assim como o XML EXPLICIT ela permite a produção de documentos XML mais parametrizáveis do que as variações RAW e AUTO. A grande diferença é que essa construção é bem mais simples que a EXPLICIT. Ao invés de basear-se em consultas e metadados mais complexos, basta conhecer a XPath para utilizar essa variação.

SELECT
    RegiaoNome AS 'Regiao/@Nome',
    UF.EstadoSigla AS 'Regiao/UF/@Sigla',
    UF.EstadoNome AS 'Regiao/UF/@Nome',
    Mun.MunicipioNome AS 'Regiao/UF/Nome/Municipio'
FROM
    Regiao
    INNER JOIN Estado AS UF
        ON Regiao.RegiaoID = UF.RegiaoID
    INNER JOIN Municipio AS Mun
        ON UF.EstadoSigla = Mun.EstadoSigla
WHERE
    UF.EstadoSigla = 'GO'
ORDER BY
    RegiaoNome, UF.EstadoSigla, UF.EstadoNome
FOR XML PATH

A sentença SQL acima cria apelidos (Alias) para as quatro colunas referenciadas. Cada coluna recebe uma expressão XPath válida especificando atributos (@) ou elementos.

<row>
  <Regiao Nome="Centro Oeste">
    <UF Sigla="GO" Nome="Goiás">
      <Nome>
        <Municipio>Araçu</Municipio>
      </Nome>
    </UF>
  </Regiao>
</row>
<row>
  <Regiao Nome="Centro Oeste">
    <UF Sigla="GO" Nome="Goiás">
      <Nome>
        <Municipio>Goiânia</Municipio>
      </Nome>
    </UF>
  </Regiao>
</row>

Páginas: « Anterior 1 2 3 4 5 6 7 8 9 10 11 Próximo »  Próximo: Extras I »


CLAUDIO DE CARVALHO <CLAUDIOCARVALHO@DEVIR.COM.BR>
Ajudou-me bastante ter o entendimento do assunto.
Ok, o documento é realmente muito esclarecedor. Porém estou com dificuldades para gerar isto em uma stored procedure. Realmente o FOR XML apenas pode ser usado para saida direta ao client? Não estou vendo uma saída prática para isto. Obrigado
Muito bom os comentários sobre a questão do uso do XPath, agora a dificuldade encontro quando estou armazenando informações em XML e gostaria de atualizá-las via XPath em um Campo Text por exemplo, ainda não encontrei uma forma de atualizar algum valor de um elemento baseado do ID de uma linha por exemplo. tipo ainda não encontrei uma função ou procedure que faça uma tarefa de fazer por exemplo um comando do tipo :
Update tabela_fisica set
campoxml = updatexml(campoxml,'Regiao/UF/Nome/Municipio',valornovo)
WHERE equals_path(campoxml,'Regiao/Nome') = 'Centro Oeste' and
equals_path(campoxml,'Regiao/UF') = 'GO' and equals_path(campoxml,'Regiao/UF/MUNICIPIO') = 'Araçu' por exemplo
Ainda estou a procura para o Uso no SQL Server 2000 senao tiver no 2005 server ???
aline carare candido <alinecarrare@hotmail.com>
bom de mais
Jose Orlando Rocha <orocha@correios.com.br>
Estou buscando importar arquivos XML para um banco de dados de uma aplicação que estamos desenvolvendo.
Pelo que li e entendi, penso que com o artigo poderei fazer a importação. Rocha