Sql Server - захватывает XML-запрос и сохраняет его в таблице?

StackOverflow https://stackoverflow.com/questions/1381909

  •  21-09-2019
  •  | 
  •  

Вопрос

Я хотел бы запустить (расширенный) запрос, который выдает одну строку XML.Этот XML-файл представляет реляционные данные объемом около 12 таблиц.Когда я "удаляю" строку из таблицы верхнего уровня, я хотел бы "зафиксировать" состояние данных в этот момент (в XML), сохранить их в архивной таблице, затем удалить все данные дочерней таблицы и, наконец, пометить таблицу / строку верхнего уровня как "IsDeleted= 1".У нас есть другие данные, зависшие в родительской таблице, которые НЕ МОЖЕТ быть удаленным и не может потерять связь с верхней таблицей.

У меня есть большая часть разработанного XML - см. мой пост здесь на той банке с червями.

Теперь, как я могу записать это в архивную таблицу?

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 ...

Это просто не работает.:)

Есть какие-нибудь предложения?

ТИА

Это было полезно?

Решение

Вам нужен подзапрос, чтобы обернуть все это XML-создание в один скаляр, который переходит в столбец XmlData.Опять же, используйте TYPE для создания скаляра типа XML, а не строки:

INSERT INTO CampaignArchive(CampaignID, XmlData)
SELECT CampaignID, (
 select (really long list of columns) 
 FROM (all my tables) FOR XML PATH ..., type);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top