Conheça também: Onmasters . Ofertas . Divulgue! . Vai.la . Geraboleto . Baixa.la . Assista.la . Joga.la
» 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


XML Aninhados

A cláusula FOR XML combinada com a cláusula SELECT permite que elementos XML sejam aninhados. Essa combinação pode ser muito útil uma vez que, de certa forma, elementos multivalorados podem ser representados. A sentença SQL abaixo demonstra o aninhamento de documentos XML.

SELECT
  Regiao.RegiaoNome AS Nome,
  (
    SELECT Estado.EstadoNome AS Nome
    FROM Estado
    WHERE Regiao.RegiaoID = Estado.RegiaoID FOR XML AUTO, TYPE
  )
FROM
    Regiao AS Regiao
FOR XML AUTO

Essa consulta só foi possível de ser realizada devido ao uso da opção TYPE. Sem ela o resultado da subquery seria um campo texto normal e não poderia ser corretamente aninhado. A consulta abaixo é bem interessante. Ela retorna todos as regiões do País, seus estados e os dois primeiros municípios de cada estado.

SELECT
  Regiao.RegiaoNome AS Nome,
  (
    SELECT
    Estado.EstadoNome AS Nome,
    Estado.EstadoSigla AS UF,
    (
      SELECT TOP 2 MunicipioNome
      FROM Municipio
      WHERE Estado.EstadoSigla = Municipio.EstadoSigla
      FOR XML AUTO, TYPE
    )
    FROM Estado
    WHERE Regiao.RegiaoID = Estado.RegiaoID FOR XML AUTO, TYPE
  )
FROM
    Regiao AS Regiao
FOR XML AUTO, ROOT('Brasil')

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


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