循环结构
循环结构共有三种类型的语句:1.LOOP 2.WHILE DO 3.REPEAT UNTIL
1.LOOP:
1 DELIMITER // 2 CREATE PROCEDURE test_loop() 3 BEGIN 4 #声明局部变量 5 DECLARE num INT DEFAULT 1; 6 7 loop_label:LOOP 8 #重新赋值 9 SET num = num + 1; 10 11 #可以考虑某个代码程序反复执行。(略) 12 13 IF num >= 10 THEN LEAVE loop_label; 14 END IF; 15 END LOOP loop_label; 16 17 #查看num 18 SELECT num; 19 20 END // 21 22 DELIMITER ;
格式:loop循环的名字:LOOP + 循环体 + END LOOP loop循环的名字
因为LOOP要通过LEAVE来退出循环,所以一般要对LOOP这个循环体进行命名
应用:
1 #举例2:当市场环境变好时,公司为了奖励大家,决定给大家涨工资。 2 #声明存储过程“update_salary_loop()”,声明OUT参数num,输出循环次数。 3 #存储过程中实现循环给大家涨薪,薪资涨为原来的1.1倍。直到全公司的平 4 #均薪资达到12000结束。并统计循环次数。 5 6 7 DELIMITER // 8 9 CREATE PROCEDURE update_salary_loop(OUT num INT) 10 BEGIN 11 #声明变量 12 DECLARE avg_sal DOUBLE ; #记录员工的平均工资 13 14 DECLARE loop_count INT DEFAULT 0;#记录循环的次数 15 16 #① 初始化条件 17 #获取员工的平均工资 18 SELECT AVG(salary) INTO avg_sal FROM employees; 19 20 loop_lab:LOOP 21 #② 循环条件 22 #结束循环的条件 23 IF avg_sal >= 12000 24 THEN LEAVE loop_lab; 25 END IF; 26 27 #③ 循环体 28 #如果低于12000,更新员工的工资 29 UPDATE employees SET salary = salary * 1.1; 30 31 #④ 迭代条件 32 #更新avg_sal变量的值 33 SELECT AVG(salary) INTO avg_sal FROM employees; 34 35 #记录循环次数 36 SET loop_count = loop_count + 1; 37 38 END LOOP loop_lab; 39 40 #给num赋值 41 SET num = loop_count; 42 43 END // 44 45 46 DELIMITER ;
2.WHILE DO:
1 #举例1: 2 DELIMITER // 3 CREATE PROCEDURE test_while() 4 5 BEGIN 6 #初始化条件 7 DECLARE num INT DEFAULT 1; 8 #循环条件 9 WHILE num <= 10 DO 10 #循环体(略) 11 12 #迭代条件 13 SET num = num + 1; 14 END WHILE; 15 16 #查询 17 SELECT num; 18 19 END // 20 21 DELIMITER ;
格式:WHILE 能够执行循环的条件 DO
循环体
END WHILE;
1 #举例2:市场环境不好时,公司为了渡过难关,决定暂时降低大家的薪资。 2 #声明存储过程“update_salary_while()”,声明OUT参数num,输出循环次数。 3 #存储过程中实现循环给大家降薪,薪资降为原来的90%。直到全公司的平均薪资 4 #达到5000结束。并统计循环次数。 5 6 DELIMITER // 7 CREATE PROCEDURE update_salary_while(OUT num INT) 8 9 BEGIN 10 #声明变量 11 DECLARE avg_sal DOUBLE ; #记录平均工资 12 DECLARE while_count INT DEFAULT 0; #记录循环次数 13 14 #赋值 15 SELECT AVG(salary) INTO avg_sal FROM employees; 16 17 WHILE avg_sal > 5000 DO 18 UPDATE employees SET salary = salary * 0.9 ; 19 SET while_count = while_count + 1; 20 21 SELECT AVG(salary) INTO avg_sal FROM employees; 22 23 END WHILE; 24 25 #给num赋值 26 SET num = while_count; 27 28 29 END // 30 31 DELIMITER ;
3.REPEAT UNTIL:
1 DELIMITER // 2 3 CREATE PROCEDURE test_repeat() 4 BEGIN 5 #声明变量 6 DECLARE num INT DEFAULT 1; 7 8 REPEAT 9 SET num = num + 1; 10 UNTIL num >= 10 #此处记得不要加分号 11 END REPEAT; 12 13 #查看 14 SELECT num; 15 16 END // 17 18 19 DELIMITER ;
格式:REPEAT
循环体
UNTIL 结束的条件(不加分号)
END REPEAT;
补充:与前两种格式相比,这种循环体,无论进入什么条件,整个循环体至少都会执行1次,而前两种格式最少执行的次数为0
补充:一般来说不涉及到多重循环,只有一重循环,以及没有用到Iterator时,一般没必要对WHILE DO,REPERAT UNTIL进行命名(命名的主要作用是对不同的循环进行区分,多重循环中,要按规律逐一退出循环)
循环结构的总体总结:
循环结构包含以下四要素,每个循环结构都按照以下四个方面思路依次构建代码:
1.初始化条件 2. 循环条件 3.循环体 4.迭代式子
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)