Thursday, March 17, 2016

Cursor Demo



CREATE TABLE Employee
(
 EmpID int PRIMARY KEY,
 EmpName varchar (50) NOT NULL,
 Salary int NOT NULL,
 Address varchar (200) NOT NULL,
)
GO
INSERT INTO Employee(EmpID,EmpName,Salary,Address) VALUES(1,'Mohan',12000,'Noida')
INSERT INTO Employee(EmpID,EmpName,Salary,Address) VALUES(2,'Pavan',25000,'Delhi')
INSERT INTO Employee(EmpID,EmpName,Salary,Address) VALUES(3,'Amit',22000,'Dehradun')
INSERT INTO Employee(EmpID,EmpName,Salary,Address) VALUES(4,'Sonu',22000,'Noida')
INSERT INTO Employee(EmpID,EmpName,Salary,Address) VALUES(5,'Deepak',28000,'Gurgaon')
GO
SELECT * FROM Employee

==================================
Cursor
=====================

     SET NOCOUNT ON
    DECLARE @Id int
    DECLARE @name varchar(50)
    DECLARE @salary int
     DECLARE cur_emp CURSOR
    STATIC FOR
    SELECT EmpID,EmpName,Salary from Employee
    OPEN cur_emp
    IF @@CURSOR_ROWS > 0
     BEGIN
     FETCH NEXT FROM cur_emp INTO @Id,@name,@salary
     WHILE @@Fetch_status = 0
     BEGIN
     PRINT 'ID : '+ convert(varchar(20),@Id)+', Name : '+@name+ ', Salary : '+convert(varchar(20),@salary)
     FETCH NEXT FROM cur_emp INTO @Id,@name,@salary
     END
    END
    CLOSE cur_emp
    DEALLOCATE cur_emp
    SET NOCOUNT OFF

=========================================

With table varible
==============================================


     SET NOCOUNT ON
  
     DECLARE @Id int
     DECLARE @name varchar(50)
     DECLARE @salary int
    
     DECLARE @LocalTempTable table(
       Id int,
       name varchar(max),
       Salary varchar(max))
    
     DECLARE cur_emp CURSOR
     
    STATIC FOR
  
    SELECT EmpID,EmpName,Salary from Employee
    OPEN cur_emp
   
      IF @@CURSOR_ROWS > 0
     BEGIN
     FETCH NEXT FROM cur_emp INTO @Id,@name,@salary
     WHILE @@Fetch_status = 0
     BEGIN
           
            IF @salary >10000
            BEGIN
            insert into @LocalTempTable(Id,name,Salary) values( @Id, @name,@salary)
            PRINT 'ID : '+ convert(varchar(20),@Id)+', Name : '+@name+ ', Salary : '+convert(varchar(20),@salary)
            END
    
     FETCH NEXT FROM cur_emp INTO @Id,@name,@salary
     END
    END
    select * from @LocalTempTable
    CLOSE cur_emp
    DEALLOCATE cur_emp
    SET NOCOUNT OFF


No comments:

Post a Comment