Pergunta

Eu gostaria de executar uma consulta (extensa) que produz uma linha de XML. Este XML representa cerca de 12 tabelas de dados relacionais. Quando eu "excluo" uma linha da tabela de nível superior, gostaria de "capturar" o estado dos dados naquele momento (em XML), salve -o em uma tabela de arquivo e exclua todos os dados da tabela infantil e finalmente marque o Tabela/linha de nível superior como "ISDELED = 1". Temos outros dados pendurados na tabela pai que NÃO PODES ser excluído e não pode perder a relação com a mesa superior.

Eu tenho a maior parte do XML funcionou - veja meu post aqui naquela lata de vermes.

Agora, como posso capturar isso em uma mesa de arquivo?

CREATE TABLE CampaignArchive(CampaignID int, XmlData XML)

INSERT INTO CampaignArchive(CampaignID, XmlData)
SELECT CampaignID, (really long list of columns) FROM (all my tables) FOR XML PATH ...

Isso simplesmente não funciona. :)

Alguma sugestão?

Tia

Foi útil?

Solução

Você precisa de uma subconeração para envolver toda a criação XML em um único escalar que entra na coluna XMLDATA. Novamente, use o tipo para criar um escalar do tipo XML não uma string:

INSERT INTO CampaignArchive(CampaignID, XmlData)
SELECT CampaignID, (
 select (really long list of columns) 
 FROM (all my tables) FOR XML PATH ..., type);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top