如何返回结果集以及删除

时间:2016-09-11 05:15:18

标签: sql sql-server sql-server-2012

我正在尝试从表QUEUE获取记录并删除相同的记录。

CREATE TABLE DBO.QUEUE 
( 
     QUEUEID INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, 
     SOMEACTION VARCHAR(100)
) 

使用updlock& readpast我能够删除已处理的记录,但我还需要该记录,如何做到这一点?

我在结果集中需要QUEUEIDSOMEACTION列。

BEGIN TRAN TRAN1  

SELECT TOP 1 @queueid = QUEUEID  
FROM DBO.QUEUE WITH (updlock, readpast)  

PRINT 'processing queueid # ' + CAST(@queueid AS VARCHAR)  

DELETE FROM DBO.QUEUE  
WHERE QUEUEID = @queueid 

COMMIT  

1 个答案:

答案 0 :(得分:3)

正如您和@Andreas已经提到的那样 - 在您的OUTPUT声明中使用DELETE子句:

DELETE FROM DBO.QUEUE  
OUTPUT deleted.QueueId, deleted.SomeAction
WHERE QUEUEID = @queueid 

这将返回(作为结果集)已删除的值。