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)
相关推荐
l1t3 分钟前
DeepSeek总结的一个不含数据的 DuckDB 数据库
服务器·数据库·duckdb
Cc.Y8 分钟前
Java零基础入门:封装与继承 —— 从“裸奔“到“穿衣服“,从“重复造轮子“到“站在巨人肩膀上“
java·开发语言
Escalating_xu9 分钟前
【C 语言】深入理解指针(4):回调函数、qsort、void * 与泛型排序的模拟实现
java·c语言·开发语言
Shaoshing16 分钟前
雪花算法
java
w_zero_one27 分钟前
链表(4)
java·数据结构·算法
PaperData1 小时前
2007-2020年税收调查面板数据
数据库
见叶之秋1 小时前
C++ 泛型世界的两块拼图:容器适配器与仿函数
java·开发语言
MayBaymax1 小时前
MQ 基础概念与架构
java·中间件·架构·java-rocketmq
Dovis(誓平步青云)1 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
程序员清风1 小时前
CSV、Excel 与数据库数据读取实践
数据库·oracle·excel