OUTPUT将记录更新为FOR XML语句

时间:2012-06-21 13:27:32

标签: sql xml sql-server-2008 tsql xpath

是否可以更新表并在FOR XML语句中返回更新的值? 请考虑以下客户表:

Customers  
Id     FirstNam     LastNam  
 1      John          Doe  
 2      James        Smith
 3      Martin       Jones  

我想将ID为2的客户的FirstNam更新为David,并将结果作为XML返回。
我尝试过使用:

UPDATE Customers  
SET FirstNam = 'David'
WHERE Id = 2
OUTPUT inserted.FirstNam
FOR XML PATH('')

当然,这不起作用。我究竟做错了什么?一如既往,非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我们无法直接将更新后的值插入XML 如果要保存更新数据的XML,则需要分两步完成:

步骤1:使用表变量并将更新的数据插入到该表变量中(作为简单过程)

DECLARE @Updated AS TABLE(columns..)

UPDATE Customers  
SET FirstNam = 'New_Name'
OUTPUT INSERTED.FirstNam @Updated
WHERE Id = 2

第2步:

从表变量@Updated生成XML:

SELECT *
FROM @Updated
FOR XML PATH(''), ROOT('Cust')

并将其保存到您想要的地方。