OUTPUT Clause In SQL Server

OUTPUT Clause In SQL Server:

OUTPUT clause  returns information from, or expressions based on, each row affected by an INSERT, UPDATE, DELETE statement. We primarily use the OUTPUT clause for auditing and archiving modified rows. We can capture resuls from INSERT, UPDATE, DELETE statements and insert into a table. In this blog, I will explain how to use OUTPUT clause for INSERT,UPDATE and DELETE statements.

First we create an Employee table.

  1. CREATE TABLE [dbo].[Employee](  
  2.   
  3. [Emp_Id] [intNOT NULL,  
  4.   
  5. [EmployeeName] [nvarchar](maxNULL,  
  6.   
  7. [EmpSalary] [intNULL,  
  8.   
  9. [StateId] [intNULL,  
  10.   
  11. [CityId] [intNULL  
  12.   
  13. ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  
  14.   
  15. GO  
Now insert some data into table.
 
  

OUTPUT Clause with INSERT Statement:

  1. INSERT INTO dbo.Employee  
  2.   
  3. (  
  4.   
  5. Emp_Id,  
  6.   
  7. EmployeeName,  
  8.   
  9. EmpSalary,  
  10.   
  11. StateId,  
  12.   
  13. CityId  
  14.   
  15. )  
  16.   
  17. OUTPUT INSERTED.*  
  18.   
  19. VALUES  
  20.   
  21. (  
  22.   
  23. 11, -- Emp_Id - int  
  24.   
  25. N'Nitin'-- EmployeeName - nvarchar  
  26.   
  27. 35000, -- EmpSalary - int  
  28.   
  29. 1, -- StateId - int  
  30.   
  31. -- CityId - int  
  32.   
  33. )  

Output:

OUTPUT Clause with Update Statement:

  1. /*Declare Table*/  
  2.   
  3. DECLARE @TAb AS TABLE(  
  4.   
  5. [Emp_Id] [intNOT NULL,  
  6.   
  7. [EmployeeName] [nvarchar](maxNULL,  
  8.   
  9. [EmpSalary] [intNULL,  
  10.   
  11. [StateId] [intNULL,  
  12.   
  13. [CityId] [intNULL  
  14.   
  15. )  
  16.   
  17. UPDATE dbo.Employee  
  18.   
  19. SET  
  20.   
  21. dbo.Employee.EmployeeName = N'Pankaj Choudhary' -- nvarchar  
  22.   
  23. OUTPUT INSERTED.* INTO @TAb  
  24.   
  25. WHERE dbo.Employee.Emp_Id=1;  
  26.   
  27. SELECT * FROM @TAb t  

Output:

 

OUTPUT Clause with DELETE Statement:

  1. DELETE FROM dbo.Employee  
  2.   
  3. OUTPUT DELETED.*  
  4.   
  5. WHERE Emp_Id=2  

Output: