Saturday 13 July 2013

How to work with Row Constructors , inserted and deleted tables and Handle Result Set

There are many ways to track changes made to the table in SQL Server one of the method is to use inserted and deleted tables and get the result set and use in code appropriately.
Step 1: Creating Table
create table Emp
(
empId int primary key identity,
class int,
empName varchar(30),
sal money,
empState varchar(25)
)
Step 2: Inserting values into the table
use row constructors or insert one by one
insert into Emp values
(2,’Dilip’,3000,’AP’),
(2,’Rahul’,5000,’DH’),
(3,’Mohan’,7000,’KR’),
(2,’Dilip’,3000,’AP’),
(2,’Rahul’,5000,’DH’),
(3,’Mohan’,7000,’KR’),
(4,’Dilip’,3000,’AP’),
(5,’Rahul’,5000,’DH’),
(6,’Mohan’,7000,’KR’),
(5,’Dilip’,3000,’AP’),
(6,’Rahul’,5000,’DH’)
Then,
Output clause
/* Local System*/
Updating
update Emp Set sal = sal +1
output inserted.empId,deleted.sal as [old sal], inserted.sal as [new sal]
where class =2
/* table Variable for server side maintenance*/
declare @change table
(
id int not null,
[old sal] money,
[new sal] money
)
update Emp Set sal = sal +1
output inserted.empId,deleted.sal as [old sal], inserted.sal as [new sal] into @change
where class =2
select * from @change
Deleting
delete Emp
output deleted.*
where empId=3 or empId = 6
Inserting
insert into Emp
output inserted.*
values
(13,’Dilip’,332.93,’JK’),
(14,’rakesh’,312.93,’GJ’)
For Updating,deleting and inserting we get a result set.
Update 21 Jan 2013
One of my reader Mini asked me that she is trying to insert multiple values into table using row constructor but it is giving error in the comma in the syntax ?
Ans:
1)  Result set are not supported in sql server expressed Edition
2) Inserting multiple rows or technically can be called as Row Constructors are new feature added in SQL Server 2008
if we try to execute the above code on SQL Server 2005 we will get an error at comma stating that it is not allowed, because this syntax is introduced in SQL Server 2008 and even when we are working on client server environment no matter what SQL Server you have if the server to whom you are connecting is previous versions of SQL Server 2008 it will not execute, so these things should kept into consideration.

No comments:

Post a Comment

C# LINQ Joins With SQL

There are  Different Types of SQL Joins  which are used to query data from more than one database tables. In this article, you will learn a...