以XML格式获取更新的行

时间:2016-01-12 07:06:48

标签: sql-server

有没有办法在sql server中将最后一行更新为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

除了将它写入表并从表中选择之外,还有什么方法可以实现这一目标吗?

1 个答案:

答案 0 :(得分: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');