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)
相关推荐
Crazy CodeCrafter6 分钟前
现在做服装,实体和电商怎么选?
大数据·数据库·人工智能·微信·开源软件·零售
一叶龙洲11 分钟前
Java中使用模板引擎(FreeMarker / Velocity) + Word XML导出复杂Word
xml·java·word
一江寒逸16 分钟前
零基础从入门到精通MongoDB(下篇):进阶精通篇——吃透高级查询、事务、索引优化与集群架构,成为MongoDB实战高手
数据库·mongodb·架构
Halo_tjn17 分钟前
Java 接口的定义重构学生管理系统
java·开发语言·算法
sa1002720 分钟前
一键获取淘宝天猫商品评论:API 接口实战与多语言实现教程
数据库·oracle
Albert Edison24 分钟前
【RabbitMQ】快速入门
java·分布式·rabbitmq
ch.ju25 分钟前
Java程序设计(第3版)第二章——类型转换(1)
java
XiYang-DING27 分钟前
【Java】哈希
java·哈希算法·散列表
huanmieyaoseng100328 分钟前
Linux安装达梦数据库DM8
linux·运维·数据库
ai旅人30 分钟前
Guava RateLimiter深度解析:非阻塞令牌桶限流原理与跑批实战
java·限流·guava