1.if
- 基本语法
if 条件判断 then
-- 满足条件时,要执行的代码
end if;
- 符号语法
if 条件判断 then
-- 满足条件,要执行的代码
else
-- 不满足条件,要执行的代码
if 条件判断 then //如果需要
-- 满足条件,要执行的代码
end if;
end if;
2.while
循环体都是在大型代码块中使用的
- 基本语法
while 条件 do
-- 循环执行的代码
end while;
在 MySQL 中没有 continue 和 break,但是有其替代的关键字
iterate
:迭代,类似于continue
,表示结束本次循环,开始下一次循环leave
:离开,类似于break
,直接结束整个循环
基本语法
循环名字:while 条件判断 do
if 条件判断 then
循环控制
iterate/leave 循环名字;
end if;
end while;
3.举例
需求:从 1 开始,直到用户传入的对应的值为止,自动求和,凡是 5 的倍数都不要
3.1 创建函数
-- 修改语句结束符为 $$
delimiter $$
create function fun(value int) returns int
begin
...
end
-- 语句结束
$$
-- 修改语句结束符为 ;
delimiter ;
3.2 定义一个变量来保存累加后的结果
使用局部变量,此结果只是在函数内部使用
- 语法:
declare 变量名 类型 =|default 默认值
-- 修改语句结束符为 $$
delimiter $$
create function fun(value int) returns int
begin
-- 声明局部变量,必须在函数体最开始声明
declare num int default 0;
end
-- 语句结束
$$
-- 修改语句结束符为 ;
delimiter ;
3.3 使用循环来累加
使用 set 变量 = 新值
对变量进行赋值
-- 修改语句结束符为 $$
delimiter $$
create function fun(value int) returns int
begin
-- 声明局部变量,必须在函数体最开始声明
declare num int default 0;
declare i int default 1;
-- 循环处理
while i < value do
set num = num + i;
set i = i + 1;
end while;
-- 返回结果
return num;
end
-- 语句结束
$$
-- 修改语句结束符为 ;
delimiter ;
3.4 在累加之前进行条件条件判断
注意此时需要在 while 前面加上循环的名字,iterate 和 leave 后面也需要加上循环的名字
-- 修改语句结束符为 $$
delimiter $$
create function fun(value int) returns int
begin
-- 声明局部变量,必须在函数体最开始声明
declare num int default 0;
declare i int default 1;
-- 循环处理
jump:while i < value do
-- 判断 i 是不是 5 的倍数
if i % 5 = 0 then
set i = i + 1;
-- 跳出此次循环
iterate jump;
end if;
set num = num + i;
set i = i + 1;
end while;
-- 返回结果
return num;
end
-- 语句结束
$$
-- 修改语句结束符为 ;
delimiter ;
3.5 函数必须有返回值
-- 修改语句结束符为 $$
delimiter $$
create function fun(value int) returns int
begin
-- 声明局部变量,必须在函数体最开始声明
declare num int default 0;
declare i int default 1;
-- 循环处理
jump:while i < value do
-- 判断 i 是不是 5 的倍数
if i % 5 = 0 then
set i = i + 1;
-- 跳出此次循环
iterate jump;
end if;
set num = num + i;
set i = i + 1;
end while;
-- 返回值
return num;
end
-- 语句结束
$$
-- 修改语句结束符为 ;
delimiter ;
我们在 MySQL 中进行实验
调用函数