MySQL数据库——存储过程
- MySQL数据库——存储过程 推荐度:
- 相关推荐
MySQL数据库——存储过程
目录
while
介绍
案例
repeat
介绍
案例
loop
介绍
案例一
案例二
while
介绍
while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的SQL语句。具体语法为:
-- 先判定条件,如果条件为true,则执行逻辑,否则,不执行逻辑WHILE 条件 DOSQL逻辑...END WHILE;
案例
计算从1累加到n的值,n为传入的参数值。
-- A. 定义局部变量, 记录累加之后的值;
-- B. 每循环一次, 就会对n进行减1 , 如果n减到0, 则退出循环create procedure p(in n int)
begindeclare total int default 0;while n>0 doset total := total + n;set n := n - 1;end while;select total;end;call p(100);
repeat
介绍
repeat是有条件的循环控制语句, 当满足until声明的条件的时候,则退出循环 。具体语法为:
-- 先执行一次逻辑,然后判定UNTIL条件是否满足,如果满足,则退出。
-- 如果不满足,则继续下一次循环REPEATSQL逻辑...UNTIL 条件END REPEAT;
案例
计算从1累加到n的值,n为传入的参数值。(使用repeat实现)
-- A. 定义局部变量, 记录累加之后的值;
-- B. 每循环一次, 就会对n进行-1 , 如果n减到0, 则退出循环create procedure p(in n int)
begindeclare total int default 0;repeatset total := total + n;set n := n - 1;until n <= 0end repeat;select total;end;call p(10);
call p(100);
loop
介绍
LOOP 实现简单的循环,如果不在SQL逻辑中增加退出循环的条件,可以用其来实现简单的死循环。
LOOP可以配合一下两个语句使用:
- LEAVE :配合循环使用,退出循环。
- ITERATE:必须用在循环中,作用是跳过当前循环剩下的语句,直接进入下一次循环。
[begin_label:] LOOPSQL逻辑...END LOOP [end_label];
LEAVE label; -- 退出指定标记的循环体ITERATE label; -- 直接进入下一次循环
上述语法中出现的 begin_label,end_label,label 指的都是我们所自定义的标记,可以自己进行命名。
案例一
计算从1累加到n的值,n为传入的参数值。
-- A. 定义局部变量, 记录累加之后的值;
-- B. 每循环一次, 就会对n进行-1 , 如果n减到0, 则退出循环 ----> leave xxcreate procedure p(in n int)
begindeclare total int default 0;sum:loopif n<=0 thenleave sum;end if;set total := total + n;set n := n - 1;end loop sum;select total;end;call p(100);
案例二
计算从1到n之间的偶数累加的值,n为传入的参数值。
-- A. 定义局部变量, 记录累加之后的值;
-- B. 每循环一次, 就会对n进行-1 , 如果n减到0, 则退出循环 ----> leave xx
-- C. 如果当次累加的数据是奇数, 则直接进入下一次循环. --------> iterate xxcreate procedure p(in n int)
begindeclare total int default 0;sum:loopif n<=0 thenleave sum;end if;if n%2 = 1 thenset n := n - 1;iterate sum;end if;set total := total + n;set n := n - 1;end loop sum;select total;end;call p(100);
END
学习自:黑马程序员——MySQL数据库课程
最新文章
- 电脑的日常维护与故障诊断常识
- 浪潮服务器安装操作系统
- 【华为OD题库
- 新版软考高项试题分析精选(二)
- nvm工具解决nodejs版本切换问题
- 在AI时代提升个人晋升力的策略
- 6.6二叉树的最大深度(LC104
- 红队专题
- Ultipa 支持OpenCypher,助力企业级应用发展
- Direct3D拾取
- GraphQL 与 REST 双重赋能:Hasura 帮你给数据库添加接口
- QML16、从 C++ 定义 QML 类型
- XML Web 服务 Eclipse实现中的sun
- 时间序列预测实战(十五)PyTorch实现GRU模型长期预测并可视化结果
- 如何应对网站攻击?F5聚焦网站安全防护
- R语言编写代码示例
- Ansible的变量(vars,register,set