Usuário com melhor resposta
Como acrescentar HASH em query XML EXPLICIT?

Pergunta
-
Pessoal,
Preciso acrescentar uma tag de hash no meu XML. Estou utilizando SQL Server 2000.
O que eu fiz:
1) Montei um Select XML Explicit que retorna uma linha XML buscando dados de uma tabela. Ficou perfeito.
2) Achei um site que tem o algoritimo para gerar o valor do HASH: http://www.codeproject.com/KB/database/xp_md5.aspx
Legal! Porém, a função que gerar o hash pede um valor string e o select do XML não traz um valor string.
Pergunta: Como faço para incluir um hash no meu xml explicit? Existe outra maneira de fazer isso?
Valeu!
Respostas
-
Bem pessoal, desistir do hash mas só para ficar registrado fiz um JOB para gerar o arquivo diariamente com o seguinte comando:
bcp "exec pubs.dbo.xmlTeste" queryout "c:\XML\Teste.XML" -c -SServer13 -Uuser -Psenha
Valeu pessoal!!!- Marcado como Resposta Mô_romzinho segunda-feira, 27 de abril de 2009 17:44
Todas as Respostas
-
Acredito que seria mais fácil você fazer isso via aplicação, principalmente se for .net... Não existiria uma maneira fácil de vc colocar esse hash como vc está pensando.
Abraços
Gilberto Neto
Gilberto Neto Blog: http://gilberto-neto.spaces.live.com/default.aspx -
-
Junior,
Pelo que entendi, ele quer o hash justamente do xml que ele gerou com o for xml, e ai adicionar dentro. Possivelmente do xml ou da linha... para comprovar que aquela linha não foi alterada depois de gerada.
Abraços
Gilberto Neto
Gilberto Neto Blog: http://gilberto-neto.spaces.live.com/default.aspx -
-
Bom, como é o sql server 2000, eu tentaria fazer assim, mas não sei se fica ok:
Gerava o xml via for xml, jogaria o resultado numa variável, chamaria a função de hash...
Abraços
Gilberto Neto
Gilberto Neto Blog: http://gilberto-neto.spaces.live.com/default.aspx -
Eu tentei isso anteriomente, mas o problema é que a função hash quer um valor string. E não consigo jogar o valor retornado do select xml numa variável string.
É como se a linha que ele retorna fosse de um tipo diferente, um tipo xml mesmo.
Abraços
Mônica -
-
Você está certo Junior porém eu encontrei um site que tem uma dll e uma função para gerar o hash http://www.codeproject.com/KB/database/xp_md5.aspx
Mas o problema é que não consegui "jogar" o select xml para a função.
Deu para entender? -
-
Boa Tarde,
Receio que no 2000 as limitações são muitas. Desconheço uma forma de você fazer isso (embora ainda não tenha esgotado as possibilidades).
DECLARE @T TABLE (Codigo INT, Nome VARCHAR(200)) INSERT INTO @T (Codigo, Nome) VALUES (1,'Nome 1') INSERT INTO @T (Codigo, Nome) VALUES (2,'Nome 2') INSERT INTO @T (Codigo, Nome) VALUES (3,'Nome 3') DECLARE @V VARCHAR(8000) -- Erro SELECT CAST((SELECT * FROM @T FOR XML AUTO) AS VARCHAR(8000)) -- Erro SELECT @V = * FROM @T FOR XML AUTO -- Erro SELECT * INTO #T FROM @T FOR XML AUTO
[ ]s,Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comComo realizar cálculos com horas no SQL Server – Parte II
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!532.entry
Classifique as respostas. O seu feedback é imprescindível -
É, eu tb não consigo ... risos!
Tentei aqui, de todas as formas que me veio na cabeça, mas dá erro... é bem limitado o for xml auto do sql server 2000... não permite nem um INSERT INTO TABELA SELECT * FROM TABELA FOR XML AUTO....
Abraços
Gilberto Neto
Gilberto Neto Blog: http://gilberto-neto.spaces.live.com/default.aspx -
-
-
Eu acredito que realmente você terá que assinar (ou gerar o hash) fora do banco.. infelizmente... :) Não encontrei nada no SQL Server 2000 que deixasse fazer isso... O que vc pode é pelo sql server, tentar gerar um arquivo desse xml, e depois carregá-lo novamente pra fazer o hash... qual a periodicidade que vc precisa pra geração desse xml?
Abraços
Gilberto Neto
Gilberto Neto Blog: http://gilberto-neto.spaces.live.com/default.aspx -
-
Acho que na aplicação talvez seja mais simples.
Vc poderia usar o sqlcmd (http://msdn.microsoft.com/en-us/library/ms162773.aspx) para gerar o arquivo output do resultado do select. Posteriormente usar o sqlcmd para pegar esse arquivo e gerar o hash, pq provavelmente consiga pegar esse arquivo e jogar numa variável do tipo varchar(8000). Só que essa solução pode ser mais trabalhosa.
Abraços
Gilberto Neto
Gilberto Neto Blog: http://gilberto-neto.spaces.live.com/default.aspx -
Bem pessoal, desistir do hash mas só para ficar registrado fiz um JOB para gerar o arquivo diariamente com o seguinte comando:
bcp "exec pubs.dbo.xmlTeste" queryout "c:\XML\Teste.XML" -c -SServer13 -Uuser -Psenha
Valeu pessoal!!!- Marcado como Resposta Mô_romzinho segunda-feira, 27 de abril de 2009 17:44