SQL(进阶-2)- 存储过程

一:循环

1:while

1.1:语法

while循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。具体语法:

#先判定条件,如果条件为true,则执行逻辑,否则,不执行逻辑

WHILE 条件 DO

SQL逻辑。。。

END WHILE;

1.2: 练习

1:计算从1累加到n的值,n为传入的参数值;

sql 复制代码
-- while 计算从1累加到n的值,n为传入的参数值

--A:定义局部变量,记录累加之后的值;
--B:退出条件,就会对n进行减1,如果n减到0,则退出循环;每次循环递减是否大于0,大于0继续循环,小于等于0退出循环
use mydb2
--1:指定传入的参数
create procedure p7(in n int)
begin
	
	declare total int default 0;
  
    while n > 0 do
         set total = total + n;
         set n:= n-1;
    end while;
    select total;
end;

call p7(10);



---

2:Repeat循环

repeat是有条件的循环控制语句,当满足条件的时候退出循环。具体语法为:

#先执行一次逻辑,然后判定逻辑是否满足,如果满足,则退出。如果不满足,则继续下一次循环

REPEAT

SQL逻辑。。。

UNTIL条件

END REPEAT;

sql 复制代码
create procedure p8(in m int)
begin
   declare total int default 0;
   repeat
       set total = total + m;
       set m := m-1;
   until m <= 0
   end repeat;
   select total;
end;  

call P8(10)

3:LOOP循环

sql 复制代码
--- 1:计算从1累加到n的值,n为传入的参数值
create procedure p8(in n int)
begin
	declare total int default 0;
    sum:loop
	    --退出循环条件
	  if n <= 0 then
	     leave sum;
	  end if;  
	 
	  set total := total + n;
	  set n := n -1;
    	
    end loop sum;
    
   select total;
end;

call p8(10)
sql 复制代码
---2: 计算从1到n之间的偶数累加的值,n为传入的参数
-- a:定义局部变量,记录累加之和的值;
-- b:每循环一次,就会对n进行-1,如果n减到0,则退出循环 ---》leave xx
-- c:如果当次累加的数据是奇数,则直接进入下一次循环 ---> iterate xx
create procedure p9(in m int)
begin 
	declare total int default 0;
    sum loop
	    
	   if m <= 0 then
	     leave sum;
	    end if;
	   
	   if m%2=1 then
	       set m := n -1;
	       iterate sum;
	   end if;
	  
	   set total := total + m;
	   set m := m -1
    	
    end loop sum;
    
   select total;
  
end;

call p9(10)
相关推荐
怣506 小时前
MySQL多表连接:全外连接、交叉连接与结果集合并详解
数据库·sql
向上的车轮6 小时前
为什么.NET(C#)转 Java 开发时常常在“吐槽”Java:checked exception
java·c#·.net
Dragon Wu6 小时前
Spring Security Oauth2.1 授权码模式实现前后端分离的方案
java·spring boot·后端·spring cloud·springboot·springcloud
跳动的梦想家h7 小时前
环境配置 + AI 提效双管齐下
java·vue.js·spring
坚持就完事了7 小时前
Java中的集合
java·开发语言
wjhx7 小时前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt
YCY^v^7 小时前
JeecgBoot 项目运行指南
java·学习
冰暮流星7 小时前
javascript之二重循环练习
开发语言·javascript·数据库
人间打气筒(Ada)7 小时前
jenkins基于Pipeline发布项目
java·pipeline·jenkins·流水线·ci·cd·cicd
爬山算法7 小时前
Hibernate(88)如何在负载测试中使用Hibernate?
java·后端·hibernate