Use HANDLER Statement in Cursors

handler statement cursors sql

Use HANDLER Statement in Cursors

Use HANDLER Statement in Cursors

     

Use HANDLER Statement in Cursor is used to define a set of data rows where we perform operation on  a row by row basis. The Cursor help you to return a result set and return directly to the caller of the client or SQL procedure.

Understand with Example

The Tutorial illustrate an example from 'Use HANDLER Statement in Cursors'. To elaborate this, we create a table 'Stu_Table'. The create table statement create a table 'Stu_Table' with table attribute like field name and respective data type. 

Create Table Stu_Table

create table Stu_Table(Stu_Id integer(2), Stu_Name varchar(15), Stu_Class  varchar(10))

Insert data into Stu_Table

The insert into add the rows or records into the table 'Stu_Table'.

insert into Stu_Table values(1,'Komal',10);
insert into Stu_Table values(2,'Ajay',10);
insert into Stu_Table values(3,'Rakesh',10);
insert into Stu_Table values(4,'Bhanu',10);
insert into Stu_Table values(5,'Santosh',10);
insert into Stu_Table values(6,'Tanuj',10);

Stu_Table

Stu_Id Stu_Name Stu_Class
1 Komal 10
2 Ajay 10
3 Rakesh 10
4 Bhanu 10
5 Santosh 10
6 Tanuj 10

Create Cursor

Now, we use Cursor for the above table 'Stu_Table'. Begin with create procedure create a procedure curdemo. The Query begins with a begin keyword that include declare statement used to define the variable and its data type. Each begin keyword end with a end statement pair. The OPEN Cursor open the cur1 which built a result set. The repeat statement in SQL include a set of statements to be executed until a condition evaluated at the end of the REPEAT statement hold true. The fetch curl1 is used to obtain  the records into variable 'name'. The select name return you all the row which satisfy the condition. The close cur1 close the cursor cur1, when cur1 is no longer to be used.

DELIMITER $$
create procedure curdemo()
    begin
DECLARE done INT DEFAULT 0;
DECLARE name varchar(15);
DECLARE cur1 CURSOR FOR SELECT stu_name from stu_table ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur1;
REPEAT
Fetch cur1 into name;
select name;
UNTIL done END REPEAT;
close cur1;
   end$$
DELIMITER ;

Call Cursor

To call a Cursor we use the given syntax  below:

call curdemo();

Result

+-------+
| name  |
+-------+
| Komal |
+-------+
1 row in set (0.01 sec)
+------+
| name |
+------+
| Ajay |
+------+
1 row in set (0.06 sec)
+--------+
| name   |
+--------+
| Rakesh |
+--------+
1 row in set (0.13 sec)
+-------+
| name  |
+-------+
| Bhanu |
+-------+
1 row in set (0.14 sec)
+---------+
| name    |
+---------+
| Santosh |
+---------+
1 row in set (0.14 sec)
+-------+
| name  |
+-------+
| Tanuj |
+-------+
1 row in set (0.14 sec)
Query OK, 0 rows affected (0.22 sec)