MySQL Cursors

Preview:

DESCRIPTION

MySQL Cursors - Definition - Syntax - Example

Citation preview

MySQL CursorsReggie Niccolo Santos

UP ITDC

Outline

What is a cursor? Additional characteristics Syntax Example

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

MySQL Cursor Characteristics

Read-only You cannot update data in the

underlying table through the cursor

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

MySQL Cursor Characteristics

Asensitive Points to the actual data,

whereas an insensitive cursor uses a temporary copy of the data

Faster than an insensitive cursor

Syntax

DECLARE cursor_name CURSOR FOR select_statement

OPEN cursor_name

FETCH [[NEXT] FROM] cursor_name INTO var_name [, var_name] ...

CLOSE cursor_name

Things to Note

The SELECT statement cannot have an INTO clause

Cursor declarations must appear before handler declarations and after variable and condition declarations

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)

Example

DECLARE v_finished INTEGER DEFAULT 0;DECLARE v_email VARCHAR(255) DEFAULT "";DECLARE email_list VARCHAR(1000) DEFAULT ""; # declare cursor for student emailDECLARE email_cursor CURSOR FOR     SELECT email FROM student_record.students;

 # declare NOT FOUND handlerDECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = 1;

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;

References

Http://www.mysqltutorial.org/mysql-cursor/ Http://www.brainbell.com/tutorials/MySQL/Working_With_Cursors.htm

Recommended