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)
相关推荐
小bo波5 小时前
从"任意文件复制"深挖Java I/O:字符流与字节流的本质抉择
java·nio·io流·后端开发·文件复制
zzzzzz31014 小时前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
nanxun8861 天前
记一次诡异的 Docker 容器"串包"故障排查
java
用户1563068103511 天前
Day01 | Java 基础(Java SE)
java
行者全栈架构师1 天前
Maven dependency:tree 的 8 个高级用法
java·后端
行者全栈架构师2 天前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_02 天前
mac(m5)平台编译openjdk
java
倔强的石头_3 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
唐青枫3 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
云技纵横3 天前
唯一索引 INSERT 死锁实战:5 秒复现交叉插入的 S 锁循环等待
sql·mysql