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


FOR XML AUTO

A cláusula FOR XML AUTO também produz um XML baseados em atributos, mas é capaz, de forma automática, de aninhar elementos conforme a especificação do JOIN. O comando abaixo exemplifica essa cláusula.

SELECT
    RegiaoNome, EstadoNome
FROM
    Regiao AS REG
    INNER JOIN Estado AS EST
        ON REG.RegiaoID = EST.RegiaoID
WHERE
    REG.RegiaoID IN (1,2)
ORDER BY
    REG.RegiaoID
FOR XML AUTO

Ao clicar no hyperlink XML, o resultado produzido é:

<REG RegiaoNome="Centro Oeste">
  <EST EstadoNome="Distrito Federal" />
  <EST EstadoNome="Goiás" />
</REG>
<REG RegiaoNome="Nordeste">
  <EST EstadoNome="Rio Grande do Norte" />
  <EST EstadoNome="Bahia" />
</REG>

Toda vez que uma região aparece, ela se torna um elemento “REG”. Para cada região, são listados seus estados como subelementos “EST”. Os elementos “EST” estão aninhados ao elementos “REG” já que segundo a junção realizada, uma região pode ter vários estados. Os apelidos (Alias) dado às tabelas também são utilizados na definição dos nomes dos elementos.

Recomendações

As seguintes recomendações devem ser seguidas para evitar problemas com a cláusula FOR XML AUTO:

  • Mantenha a ordem das tabelas utilizadas na junção no sentido de pai pra filho
  • Utilize a cláusula Order By para garantir que os elementos estão corretamente aninhados
  • Especifique as colunas de acordo com a hierarquia das tabelas respeitando a ordem de pai para filho

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