Summary: in this tutorial, you will learn how to the MySQL LEAVE
statement to exit a stored program or terminate a loop.
Introduction to MySQL LEAVE statement
The LEAVE
statement exits the flow control that has a given label.
The following shows the basic syntax of the LEAVE
statement:
LEAVE label;
Code language: SQL (Structured Query Language) (sql)
In this syntax, you specify the label of the block that you want to exit after the LEAVE
keyword.
Using the LEAVE statement to exit a stored procedure
If the label
is the outermost of the stored procedure or function block, LEAVE
terminates the stored procedure or function.
The following statement shows how to use the LEAVE
statement to exit a stored procedure:
CREATE PROCEDURE sp_name() sp: BEGIN IF condition THEN LEAVE sp; END IF; -- other statement END$$
Code language: SQL (Structured Query Language) (sql)
For example, this statement creates a new stored procedure that checks the credit of a given customer in the customers
table from the sample database:
DELIMITER $$ CREATE PROCEDURE CheckCredit( inCustomerNumber int ) sp: BEGIN DECLARE customerCount INT; -- check if the customer exists SELECT COUNT(*) INTO customerCount FROM customers WHERE customerNumber = inCustomerNumber; -- if the customer does not exist, terminate -- the stored procedure IF customerCount = 0 THEN LEAVE sp; END IF; -- other logic -- ... END$$ DELIMITER ;
Code language: SQL (Structured Query Language) (sql)
Using LEAVE statement in loops
The LEAVE
statement allows you to terminate a loop. The general syntax for the LEAVE
statement when used in the LOOP
, REPEAT
and WHILE
statements.
Using LEAVE
with the LOOP
statement:
[label]: LOOP IF condition THEN LEAVE [label]; END IF; -- statements END LOOP [label];
Code language: SQL (Structured Query Language) (sql)
Using LEAVE
with the REPEAT
statement:
[label:] REPEAT IF condition THEN LEAVE [label]; END IF; -- statements UNTIL search_condition END REPEAT [label];
Code language: SQL (Structured Query Language) (sql)
Using LEAVE
with the WHILE
statement:
[label:] WHILE search_condition DO IF condition THEN LEAVE [label]; END IF; -- statements END WHILE [label];
Code language: SQL (Structured Query Language) (sql)
The LEAVE
causes the current loop specified by the label
to be terminated. If a loop is enclosed within another loop, you can break out of both loops with a single LEAVE
statement.
Using LEAVE statement in a loop example
The following stored procedure generates a string of integers with the number from 1 to a random number between 4 and 10:
DELIMITER $$ CREATE PROCEDURE LeaveDemo(OUT result VARCHAR(100)) BEGIN DECLARE counter INT DEFAULT 1; DECLARE times INT; -- generate a random integer between 4 and 10 SET times = FLOOR(RAND()*(10-4+1)+4); SET result = ''; disp: LOOP -- concatenate counters into the result SET result = concat(result,counter,','); -- exit the loop if counter equals times IF counter = times THEN LEAVE disp; END IF; SET counter = counter + 1; END LOOP; END$$ DELIMITER ;
Code language: SQL (Structured Query Language) (sql)
This statement calls the LeaveDemo
procedure:
CALL LeaveDemo(@result); SELECT @result;
Code language: SQL (Structured Query Language) (sql)
Here is one of the outputs:
+------------------+ | @result | +------------------+ | 1,2,3,4,5,6,7,8, | +------------------+ 1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
Summary
- Use the MySQL
LEAVE
statement to exit a stored procedure or terminate a loop.