La Cláusula OUTPUT permite retornar los registros resultantes de un update, insert o delete.
Se puede retornar la salida en una tabla o directamente. En la sentencia OUTPUT haremos referencia a los datos eliminados o insertados usando inserted y deleted.
Por ejemplo, para ver lo que borramos escribiremos:
BEGIN TRAN
Declare @Tab_Result TABLE (IdDoc int,IdPedido int, IdArticulo varchar(50))
DELETE FROM Pedidos_Cli_Lineas
OUTPUT deleted.$identity, deleted.IdPedido, deleted.IdArticulo
INTO @Tab_Result
WHERE IdEstado=0
SELECT * FROM @Tab_Result
ROLLBACK TRAN
Con las siguientes sentencias vemos directamente lo que escribimos, sin guardarlo en una segunda tabla (como hemos hecho en el ejemplo anterior):
Declare @Tab_Result TABLE (IdDoc int identity(1,1),IdPedido2 int, IdArticulo2 varchar(50))
INSERT INTO @Tab_Result (IdPedido2, IdArticulo2)
OUTPUT inserted.$identity, inserted.*
SELECT IdPedido,IdArticulo
FROM Pedidos_Cli_Lineas
WHERE IdEstado=0