Mysql 流程控制结构if case while loop repeat
Mysql 流程控制结构
- 顺序结构
- 分支结构
- 循环结构
一、分支结构
1. if函数
功能: 实现简单的双分支
# 语法:
if(表达式1,表达式2,表达式3)
如果表达式1成立,则返回表达式2的值,否则返回表达式3的值.
应用: 任何的地方
2. case结构
功能:
1.一般用于实现等值判断,实现后续分支.
2.一般用于实现区间判断,实现后续分支.
# 语法:
case [变量|表达式|字段]
when 要判断的条件 then 返回值1或语句1;
when 要判断的条件 then 返回值2或语句2;
...
else 要返回的值n或语句n;
end case;
end
# 如果when...then 后加语句则后面必须加;结尾
# 特点 :
作为表达式,嵌套在语句中使用,可以放在任何地方.
作为独立语句使用时,只能放在begin end中.
3. if结构
功能: 实现多重分支
# 语法:
if 条件1 then 语句1;
elseif 条件2 then 语句2;
...
[else 语句n;]
end if;
# 应用与begin end中
二、循环结构
循环分类:
while loop repeat
循环控制:
iterate 类似continue ,结束本次循环,继续下一次.
leave 类似break,跳出,结束当前所在的循环层.
1. loop
# 语法 :
[tag:] loop
循环体;
end loop [标签];
可以用来模拟简单的死循环.
2. repeat
# 语法 :
[tag:] repeat
循环体;
until 结束循环的条件
end repeat [标签];
3. while
# 语法 :
[tag:] while 循环条件 do
循环体;
end while [标签];
# 1. 没有添加循环控制
案例: 做一个循环a,批量插入,根据次数插入到aa表多条记录(名字n,密码123).
create procedure pro1(in insertCount int)
begin
declare i int default 1;
while i<=insertCount do
insert into aa(name,password) values(concat('任意名字'+i),'123');
set i=i+1;
end while; #循环名a前后都可以不写.
end call pro1(100)
# 2. 添加循环控制的while
案例1: 做一个循环a,批量插入,根据次数插入到aa表多条记录(名字n,密码123),当次数>20则停止
create procedure pro2(in insertCount int)
begin
declare i int default 1;
a:while i<=insertCount do
insert into aa(name,password) values(concat('任意名字'+i),'123');
if i>20 then leave a; #循环体名a
end if;
set i=i+1;
end while a; #循环体名a
end call pro2(100)
案例2: 做一个循环a,批量插入,根据次数插入到aa表多条记录(名字n,密码123),当偶数时插入.
create procedure pro3(in insertCount int)
begin
declare i int default 0;
a:while i<=insertCount do
set i=i+1;
if mod(i,2)!=0 then iterate a;
end if;
insert into aa(name,password) values(concat('任意名字'+i),'123');
end while a; #循环体名a
end call pro3(100)
## 注意! 如果使用了循环控制,则必须使用循环体命名.
三、经典案例
Copyright © 2009 - Now . XPBag.com . All rights Reserved.
夜心的小站 » Mysql 流程控制结构if case while loop repeat
夜心的小站 » Mysql 流程控制结构if case while loop repeat