Professional Documents
Culture Documents
• Cursor properties:
• A cursor is not updatable it is read-only
• A cursor will not reflect changes in its source tables.
• A cursor is not scrollable, it can be traversed in forward direction
only, forward
• Only can fetch the data in the order determined by the SELECT statement
• Can not skip records from fetching.
1- Declare cursor:
• DECLARE cursor-name CURSOR FOR SELECT ...;
• DECLARE CONTINUE HANDLER FOR NOT FOUND
• Specify what to do when no more records found
• DECLARE flag INT;
• DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1;
2- Open cursor:
• OPEN cursor-name;
3- Fetch cursor data into variables:
• FETCH cursor-name INTO variable [, variable];
4- CLOSE cursor:
• CLOSE cursor-name;
Iyad H. Alshami – SICT 3308
Cursor Example
#using cursor to sum salary for male employees
DELIMITER $$
CREATE Procedure maleSalarySum(OUT sumSalary Decimal(10,2))
BEGIN
DECLARE Sal, sumSal decimal(10,2);
DECLARE continueFlag int default 0;
DECLARE maleCursor CURSOR FOR SELECT Salary FROM salesreps where sex='m';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET continueFlag = 1;
OPEN maleCursor;
SET Sal = 0;
SET sumSal= 0;
WHILE continueFlag = 0 DO
FETCH maleCursor INTO Sal;
IF continueFlag = 0 THEN
SET sumSal = sumSal+Sal;
END IF;
END WHILE;
CLOSE maleCursor;
SET sumSalary = sumSal;
END
Iyad H. Alshami – SICT 3308
A procedure to create email list using
cursor
DELIMITER $$
DROP PROCEDURE IF EXISTS emailgroup;
CREATE PROCEDURE emailgroup (INOUT emailList varchar(4000))
BEGIN
DECLARE continueFlag INT DEFAULT 0;
DECLARE useremail varchar(100) DEFAULT "";
DECLARE email_cursor CURSOR FOR SELECT email FROM users;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET continueFlag = 1;
OPEN email_cursor;
WHILE continueFlag = 0 DO
FETCH email_cursor INTO useremail;
IF continueFlag = 0 THEN
SET emailList = CONCAT(useremail,";",emaillist);
END IF;
END WHILE;
CLOSE email_cursor;
END
INSERT INTO std_full(sid, sname,sdid,dname) Can not modify more than one
VALUE(440,"Ahmad",20,"dpt"); base table through a join view