|
||
|
|
» Início » Desenvolvimento » Banco de dados e SQL » SQL Server 2005 New Features: A cláusula FOR XML
|
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 31/01/2007SQL Server 2005 New Features: A cláusula FOR XML
FOR XML EXPLICITEssa é certamente a forma mais complexa da cláusula FOR XML, mas em muitas situações a única* capaz de retornar determinados resultados. Ainda que seja possível para as cláusulas FOR XML RAW e FOR XML AUTO retornar elementos ao invés de atributos**, em certas ocasiões, o layout do XML a ser retornado não pode ser montado com essas variações da cláusula FOR XML. A variação EXPLICIT é baseada na combinação de consultas (UNION) e para que possa ser utilizada é necessária a criação de duas colunas de metadados. A primeira coluna serve como um identificador e deve ter o apelido (Alias) TAG. A segunda coluna funciona como um link entre os elementos filho e esse identificador e deve ter o apelido de PARENT. SELECT O resultado da sentença SQL é: <Regiao Nome="Centro Oeste"> Entender essa sintaxe não é uma tarefa das mais fáceis. Na primeira consulta (antes do UNION ALL), o identificador 1 é criado. Como ele não possuirá elementos superiores, o metadado “PARENT” é nulo. Na segunda parte da consulta o identificador é 2 e como os elementos são subordinados ao resultado da primeira consulta, o metadado “PARENT” é 1 que é o identificador da primeira consulta. A expressão “[Regiao!1!Nome]” define que o primeiro elemento (identificador 1) se chamará “Regiao” e que existirá um atributo chamado “Nome”. A expressão [UF!2!Sigla] define que o elemento aninhado (identificador 2) ao elemento “Regiao” se chamará “UF” e existirá um elemento chamado “Sigla”. O mesmo raciocínio é válido para o atributo “Nome”. * Logo a seguir será explicada outra forma de produzir documentos XML mais complexos CLAUDIO DE CARVALHO <CLAUDIOCARVALHO@DEVIR.COM.BR>
Ajudou-me bastante ter o entendimento do assunto.
![]() ![]() ![]() ![]() ![]() Luciano <luciano.alberti@bennersaude.com.br>
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
![]() ![]() ![]() ![]() ![]() Ronaldo <rcampospereira@gmail.com>
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 ![]() ![]() ![]() ![]() ![]() ![]() |
|
|