2016-01-12 3 views
1

Есть ли способ получить последнюю обновленную строку как XML в sql-сервере?Получить обновленную строку как XML

Рассмотрим этот фрагмент

DECLARE @table TABLE (
    NAME NVARCHAR(255) 
    ,Col2 INT 
    ) 

INSERT INTO @table 
VALUES (
    'a1' 
    ,1 
    ) 

INSERT INTO @table 
VALUES (
    'a2' 
    ,2 
    ) 

UPDATE @table 
SET NAME = 'hello' 
OUTPUT inserted.* 
WHERE Col2 = 2 

Приведенные выше утверждения выводит обновленные строки. Как я могу вывести строку как XML, как я бы сделал с оператором SELECT?

Я пробовал синтаксис SELECT, но не удался.

UPDATE @table 
SET NAME = 'hello' 
OUTPUT (inserted.* FOR XML AUTO) 
WHERE Col2 = 2 

Есть ли способ сделать это, кроме как записать его на стол и выбрать из таблицы?

ответ

0

Есть ли способ сделать это, кроме как записать его в таблицу и выбрать из таблицы?

Не то, чтобы я знал. Создайте переменную таблицы, в которую вы вставляете результат из обновления, а затем используйте его для создания требуемого XML-вывода.

DECLARE @table TABLE 
(
    NAME NVARCHAR(255), 
    Col2 INT 
); 

INSERT INTO @table VALUES ('a1', 1); 
INSERT INTO @table VALUES ('a2', 2); 

DECLARE @updateresult TABLE 
(
    NAME NVARCHAR(255), 
    Col2 INT 
); 

UPDATE @table 
SET NAME = 'hello' 
OUTPUT inserted.NAME, 
     inserted.Col2 
INTO @updateresult(Name, Col2) 
WHERE Col2 = 2 

SELECT NAME, Col2 
FROM @updateresult 
FOR XML PATH('row'); 
Смежные вопросы