Функция OUTPUT также позволяет удобно реализовать функциональность очереди, "извлекая" из таблицы запись, при этом удалять ее. Например, если потребуется функциональность очередей на выполнение заказа, то необходимо будет создать таблицу-очередь, например CREATE TABLE [Queue]( [QueueID] [int] IDENTITY(1,1) NOT NULL, [OrderID] [int] NOT NULL
)
и с помощью нее реализовать необходимую функциональность, используя функцию OUTPUT:
DECLARE @Queue TABLE (QueueID int, OrderID int)
DELETE TOP 1 FROM [Queue] ORDER BY QueueID OUTPUT deleted.QueueID, deleted.OrderID INTO @Queue
SELECT * FROM @Queue
Без использования функции OUTPUT, код получается несколько более громоздким: DECLARE @Queue TABLE (QueueID int, OrderID int)
INSERT INTO @Queue(QueueID, OrderID) SELECT TOP 1 [Queue].QueueID, [Queue].OrderID FROM [Queue]
DELETE [Queue] FROM [Queue] AS Q1 INNER JOIN @Queue AS Q2 ON Q1.QueueID = Q2.QueueID
SELECT * FROM @Queue