SQL Server存储过程,返回更新的记录

时间:2011-08-08 15:34:56

标签: sql sql-server stored-procedures

我正在尝试创建一个存储过程,它返回所有已更新的记录。

我的更新查询是:

UPDATE BatchItems 
SET [Status] = 'Processing' 
WHERE [Status] = 'Queued'

我只是不确定如何返回这些特定记录。

2 个答案:

答案 0 :(得分:4)

您可以使用OUTPUT INSERTED.[cols]来获取语句已修改的行。

UPDATE BatchItems 
   SET [Status] = 'Processing' 
   OUTPUT INSERTED.*
WHERE [Status] = 'Queued'

实施例;

select 'Queued       ' as status, 1 as id into #BatchItems
insert  #BatchItems values ('Queued', 2)
insert  #BatchItems values ('XXX', 3)

UPDATE #BatchItems 
  SET [Status] = 'Processing' 
  OUTPUT INSERTED.*
WHERE [Status] = 'Queued'

>>status       id
>>Processing   2
>>Processing   1

答案 1 :(得分:4)

如果您使用的是SQL Server 2005或更高版本,则可以使用OUTPUT子句。

http://msdn.microsoft.com/en-us/library/ms177564(v=SQL.90).aspx

update BatchItems
set Status = 'Processing'
output inserted.*
where Status = 'Queued'