Close Cursors in SQL
Close Cursor is used to close the cursor temporary when it is not required. A cursor in a SQL can be closed with close statement. When a close statement is executed ,it leaves the cursor structure for reopening.
Understand with Example
The Tutorial illustrates an example 'Close Cursor in SQL'. To grasp this example, we create a table 'Stu_Table'. The create table Stu_Table is used to create a table 'Stu_Table' with table attribute specified in the Query.
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 records or rows to 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
The given SQL Query create a procedure curedemo which accept a input parameter name 'id'. To define a cursor and its characteristics, we use Declare Cursor. The Open Cursor is used to open the cursor name curl1,curl2 respectively. Fetch Cursor is used to fetch the values successively one by one from the cursor into 'name' and 'class'. The Close Cursor is used to de allocate the memory occupied by the cursor.
DELIMITER $$ create procedure curdemo(id int) begin DECLARE name varchar(10); DECLARE class varchar(10); DECLARE cur1 CURSOR FOR SELECT stu_name from stu_table where Stu_Id =id; DECLARE cur2 CURSOR FOR SELECT stu_class from stu_table where Stu_Id =id; OPEN cur1; OPEN cur2; Fetch cur1 into name; Fetch cur2 into class; select name ,class; close cur1; close cur2; end$$ DELIMITER ; |
Call Cursor
The Call Cursor execute the cursor value, where id is '2' as input parameter.
Call close_cursor(2); |
Result
+------+-------+ | name | class | +------+-------+ | Ajay | 10 | +------+-------+ |