3. What is a cursor?
Allows you to iterate through a result set
returned by a SELECT statement
Allows you to iterate over a set of rows
returned by a query and process each row
accordingly
5. MySQL Cursor Characteristics
Non-scrollable
− You can only fetch rows in the order
determined by the SELECT
statement
− You cannot fetch rows in the
reversed order
− You cannot skip rows or jump to a
specific row in the result set
7. Syntax
DECLARE cursor_name CURSOR FOR
select_statement
OPEN cursor_name
FETCH [[NEXT] FROM] cursor_name INTO
var_name [, var_name] ...
CLOSE cursor_name
8. Things to Note
The SELECT statement cannot have an
INTO clause
Cursor declarations must appear before
handler declarations and after variable and
condition declarations
9. Things to Note
If no more rows are available, a No Data
condition occurs with a SQLSTATE value
'02000'. To detect this condition, you can
setup a handler for it (or for a NOT FOUND
condition)
10. Example
DECLARE v_finished INTEGER DEFAULT 0;
DECLARE v_email VARCHAR(255) DEFAULT "";
DECLARE email_list VARCHAR(1000) DEFAULT "";
# declare cursor for student email
DECLARE email_cursor CURSOR FOR
SELECT email FROM
student_record.students;
# declare NOT FOUND handler
DECLARE CONTINUE HANDLER
FOR NOT FOUND SET v_finished = 1;
11. Example
OPEN email_cursor;
get_email: LOOP
FETCH email_cursor INTO v_email;
IF v_finished = 1 THEN
LEAVE get_email;
END IF;
-- build email list
SET email_list = CONCAT(v_email, ";",
email_list);
END LOOP get_email;
CLOSE email_cursor;