Reader small image

You're reading from  Learn SQL using MySQL in One Day and Learn It Well

Product typeBook
Published inApr 2024
PublisherPackt
ISBN-139781836205678
Edition1st Edition
Right arrow
Author (1)
Jamie Chan
Jamie Chan
author image
Jamie Chan

Jamie Chan is a tutor and freelance programmer with years of experience and a dedicated passion for sharing the joy of programming with as many people as possible. With seven bestselling programming books on Amazon, Jamie's publications stand out for their ability to break down complex concepts into simple terms. Additionally, each book includes complete projects at the end, enabling hands-on learning and a deep understanding of the concepts presented.
Read more about Jamie Chan

Right arrow

Chapter 12: Cursors

 

Cool! We’ve come to the final chapter before the project.

 

In this chapter, we are going to look at a major use of the LOOP statement that we learned in the previous chapter.

 

Specifically, we’ll be looking at cursors.

 

What is a Cursor?

 

First off, what is a cursor?

 

A cursor is a mechanism that allows us to step through the rows returned by a SQL statement.

 

So far, we have been learning to use SELECT statements to retrieve information from our tables. These statements return all the rows that match the stated criteria. However, there is no way for us to step through the rows one at a time.

 

If we want to do that, we have to use cursors.

 

The syntax for declaring a cursor is:

 

DECLARE cursor_name CURSOR FOR

SELECT statement

 

This cursor declaration must be done after any variable declaration.

 

After declaring the cursor, we also need to declare a handler that defines what the cursor should do when it reaches the last row of the results returned by the SELECT statement. Normally, we want the cursor to set a variable to a certain value. For instance, we may want it to set a variable called v_done to 1.

 

The syntax is:

 

...

Example

 

Let’s look at an example:

 

Suppose we want to get the names and genders of all employees in our employees table and combine them into a single line of text, here’s how we do it:

 

DELIMITER $$

CREATE FUNCTION get_employees () RETURNS VARCHAR(255) DETERMINISTIC

BEGIN

DECLARE v_employees VARCHAR(255) DEFAULT '';

DECLARE v_name VARCHAR(255);

DECLARE v_gender CHAR(1);

DECLARE v_done INT DEFAULT 0;

DECLARE cur CURSOR FOR

      SELECT em_name, gender FROM employees;

 

DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = 1;

 

OPEN cur;

 

employees_loop: LOOP

      FETCH cur INTO v_name, v_gender;

      IF v_done = 1 THEN LEAVE employees_loop;

            ELSE SET v_employees = concat(v_employees, ', ', v_name, ': ', v_gender...

lock icon
The rest of the chapter is locked
You have been reading a chapter from
Learn SQL using MySQL in One Day and Learn It Well
Published in: Apr 2024Publisher: PacktISBN-13: 9781836205678
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
undefined
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at €14.99/month. Cancel anytime

Author (1)

author image
Jamie Chan

Jamie Chan is a tutor and freelance programmer with years of experience and a dedicated passion for sharing the joy of programming with as many people as possible. With seven bestselling programming books on Amazon, Jamie's publications stand out for their ability to break down complex concepts into simple terms. Additionally, each book includes complete projects at the end, enabling hands-on learning and a deep understanding of the concepts presented.
Read more about Jamie Chan