EXIT
语句在 MySQL 中用于退出当前的会话或脚本执行。它可以用于多种场景,包括退出交互式命令行客户端、终止存储过程或函数中的执行流程等。
EXIT
语句允许你在满足特定条件时提前结束程序的执行,从而更好地控制程序的流程。EXIT
或 QUIT
时,会退出当前的会话。LEAVE
语句配合标签(label)来实现类似 EXIT
的功能。EXIT
退出客户端。LEAVE
语句在满足特定条件时提前退出存储过程。mysql> SELECT * FROM users;
+----+-------+
| id | name |
+----+-------+
| 1 | Alice |
| 2 | Bob |
+----+-------+
2 rows in set (0.00 sec)
mysql> EXIT;
Bye
LEAVE
语句DELIMITER //
CREATE PROCEDURE GetUsers()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE userId INT;
DECLARE userName VARCHAR(255);
-- 假设有一个游标用于遍历用户表
DECLARE cur CURSOR FOR SELECT id, name FROM users;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO userId, userName;
IF done THEN
LEAVE read_loop; -- 当游标遍历完所有记录时退出循环
END IF;
SELECT userId, userName;
END LOOP;
CLOSE cur;
END //
DELIMITER ;
LEAVE
语句时遇到语法错误原因:可能是由于 LEAVE
语句的使用位置不正确,或者标签(label)未正确声明。
解决方法:
LEAVE
语句与标签(label)正确配对使用。LEAVE
语句的语法是否正确。DELIMITER //
CREATE PROCEDURE GetUsers()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE userId INT;
DECLARE userName VARCHAR(255);
DECLARE cur CURSOR FOR SELECT id, name FROM users;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO userId, userName;
IF done THEN
LEAVE read_loop; -- 确保标签与 LEAVE 语句匹配
END IF;
SELECT userId, userName;
END LOOP;
CLOSE cur;
END //
DELIMITER ;
领取专属 10元无门槛券
手把手带您无忧上云