目录
- 分支结构
- 循环结构
分支结构:
1.if condition then [statement] elseif condition then [statement] else [statement] end if
实例:求两个数中的最大值,如果两个数据相等,则返回0,不相等,则返回最大值
delimiter // create function test_if(a int,b int) returns int BEGIN DECLARE max int DEFAULT 0;
-- 下面为分支结构 if a > b then set max = a; ELSEIF a<b then set max = b; ELSE set max = 0; end if; return max; end; // -- 查询 select test_if(1,2)
2.case when condition then [statement] when condition then [staement] else [statement] end case
实例:求两个数中的最大值,如果两个数据相等,则返回0,不相等,则返回最大值
delimiter // create function test_when(a int ,b int) -- 函数结构 RETURNS int -- 返回值类型 BEGIN -- 开始标签 DECLARE max int default 0; -- 定义内部变量表示最大值,默认为0 -- 下面为分支结构 CASE WHEN a > b then SET max = a; WHEN a < b then SET max = b; ELSE SET max = 0; END CASE; RETURN max; END; // -- 查询 select test_when(1,3)
循环结构:
循环控制语句包括 while condtion do [statement] 、loop 、repeat [statemnet] until condtion,其中while、loop满足条件开始循环,至少循环0次;而repeat满足条件退出循环,至少循环1次。
1. while condtion do [statement]
实例:求和
delimiter // -- 求数值a以内的数据之和 create function test_while(a int) -- 函数结构 returns int -- 返回值类型 begin DECLARE sum int default 0; -- 和 DECLARE count int default 1;-- 循环次数变量 -- 下面是循环控制语句 la:while count <= a do set sum = sum + count; set count = count + 1; end while la; return sum; end; //
2.loop
实例:求和
delimiter // create function demo_loop(a int) returns int BEGIN DECLARE s int DEFAULT 0; DECLARE i int DEFAULT 1; la:loop IF i>a then LEAVE la; end if; set s = s+i; set i=i+1; end loop la; return s; end; //
--查询
select demo_loop(1)
3.repeat [statement] until condtion
实例:求和
delimiter // create function demo_repeat(a int) returns int begin DECLARE s int default 0; DECLARE i int DEFAULT 1; la:REPEAT set s = s+i; set i=i+1; UNTIL i>a end REPEAT la; return s; end; // --查询 select demo_repeat(10)