一. 条件判断语句
1. IF
IF 表达式1 THEN 操作1
[ELSEIF 表达式2 THEN 操作2]
........
[ELSE 操作n]
END IF
DELIMITER //
CREATE PROCEDURE test()
BEGIN
DECLARE age INT DEFAULT 20;
IF age < 18 THEN SELECT '未成年';
ELSEIF age < 30 THEN SELECT '青年';
ELSEIF age < 60 THEN SELECT '中年';
ELSE SELECT '老年';
END IF;
END //
DELIMITER ;
CALL test();
2.case
CASE 表达式
WHEN 值1 THEN 结果1或语句1(如果是语句,需要加分号)
WHEN 值2 THEN 结果2或语句2(如果是语句,需要加分号)
........
ELSE 结果n或语句n(如果是语句,需要加分号)
END [CASE] (如果放在BEGIN--END中需要加CASE,如果在SELECT后面不需要)
DELIMITER //
CREATE PROCEDURE test()
BEGIN
DECLARE a INT DEFAULT 2;
CASE a
WHEN 1 THEN SELECT 'a=1';
WHEN 2 THEN SELECT 'a=2';
WHEN 3 THEN SELECT 'a=3';
ELSE SELECT 'other';
END CASE;
END //
DELIMITER ;
CALL test();
二. 循环语句
1.LOOP
[loop_label:] LOOP
循环执行的语句
END LOOP [loop_label];
DELIMITER //
CREATE PROCEDURE test()
BEGIN
DECLARE num INT DEFAULT 1;
sum: LOOP
SET num = num + 1;
IF num >= 10 THEN LEAVE sum;
END IF;
END LOOP sum;
END //
DELIMITER ;
CALL test();
2.WHILE
[while_label:] WHILE 循环条件 DO
循环体
END WHILE [while_label];
DELIMITER //
CREATE PROCEDURE test()
BEGIN
DECLARE num INT DEFAULT 1;
WHILE num <= 10 DO
#循环体(略)
SET num = num + 1;
END WHILE;
END //
DELIMITER ;
CALL test();
3.REPEAT
[repeat_label:] REPEAT
循环体
UNTIL 结束循环的条件表达式
END REPEAT [repeat_label];
DELIMITER //
CREATE PROCEDURE test()
BEGIN
DECLARE num INT DEFAULT 1;
REPEAT
SET num = num + 1;
UNTIL num >= 10 #(不能加分号)
END REPEAT;
SELECT num;
END //
DELIMITER ;
CALL test();
三. 跳转语句
1.LEAVE
LEAVE 标签名;
LEAVE退出标签名的结构体,和BEGIN-END或循环语句一起使用。类似于break
#创建存储过程,输入学生表的人数,如果人数为0,则退出BEGIN--END,
#如果人数小于2,则输出年龄的平均值,如果小于4,则输出年龄的最小值,如果大于4,则输出年龄的最大值
DELIMITER //
CREATE PROCEDURE test(IN num INT)
label: BEGIN
IF num = 0 THEN LEAVE label;
ELSEIF num <= 2 THEN SELECT AVG(Sage) FROM Student;
ELSEIF num <= 4 THEN SELECT MIN(Sage) FROM Student;
ELSE SELECT MAX(Sage) FROM Student;
END IF;
END //
DELIMITER ;
SELECT COUNT(*) INTO @num FROM Student;
CALL test(@num);
2.ITERATE
ITERATE 标签名;
ITERATE退出标签名的结构体,只能和循环语句一起使用。类似于continue
#定义局部变量num,循环结构中让num + 1,如果num<10,则继续执行循环,如果num>15,则退出循环
DELIMITER //
CREATE PROCEDURE test()
BEGIN
DECLARE num INT DEFAULT 0;
sum: LOOP
SET num = num + 1;
IF num < 10 THEN ITERATE sum;
ELSEIF num > 15 THEN LEAVE sum;
END IF;
SELECT num;
SELECT '循环'; #当num = 10 、11、12、13、14、15时会执行这个语句
END LOOP sum;
END //
DELIMITER ;
CALL test();
本文详细介绍了Python中的条件语句(IF-ELSE, CASE-CASE)和循环结构(LOOP, WHILE, REPEAT),以及如何使用LEAVE和ITERATE进行流程控制。通过实例演示了如何在存储过程中灵活运用这些结构处理不同情况的数据处理流程。

被折叠的 条评论
为什么被折叠?



