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)
相关推荐
考虑考虑9 分钟前
数据库中的EXISTS
运维·数据库·后端
Wang's Blog27 分钟前
Java框架快速入门: Spring Security+OAuth2之数据库和实体类的RBAC改造
java·数据库·spring
讳疾忌医丶1 小时前
深度拆解 RocksDB 内核:基于 C++17 的 FIFO 调度状态机与温度阶梯自愈设计
java·c++·算法·架构
郑州光合科技余经理1 小时前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
毅炼1 小时前
Rover-Suite 开源发布:轻量服务注册中心与网关一体化方案
java·后端·系统架构·gateway
梦想平凡2 小时前
百游棋牌源代码开发搭建教程(十):隔离部署、备份恢复与双端验收
java·前端·javascript·数据库·源代码管理
xcLeigh2 小时前
让大模型长出手脚,自己写SQL查数据库(Function Calling初探)
数据库·人工智能·sql·时序数据库·timechoai
yume_sibai3 小时前
06-Rust Web 开发实战(Axum 框架 + 数据库 + JWT 认证 + 中间件 + 部署)
前端·数据库·rust
sunshine22 girl3 小时前
Idea中如何搜索
java·ide·intellij-idea
猫吻鱼3 小时前
【AI 01】【Spring AI 基础使用】
java·spring·spring ai