循环结构

循环结构共有三种类型的语句: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.迭代式子

 

posted @   jue1e0  阅读(194)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示