MySQL Cursors

954 views
705 views

Published on

MySQL Cursors
- Definition
- Syntax
- Example

Published in: Technology, Business
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
954
On SlideShare
0
From Embeds
0
Number of Embeds
47
Actions
Shares
0
Downloads
18
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

MySQL Cursors

  1. 1. MySQL Cursors Reggie Niccolo Santos UP ITDC
  2. 2. Outline  What is a cursor?  Additional characteristics  Syntax  Example
  3. 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
  4. 4. MySQL Cursor Characteristics  Read-only − You cannot update data in the underlying table through the cursor
  5. 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
  6. 6. 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
  7. 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. 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. 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. 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. 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;
  12. 12. References  Http://www.mysqltutorial.org/mysql-cursor/  Http://www.brainbell.com/tutorials/MySQL/Workin

×