MySQL--流程控制

流程控制
1、顺序结构:程序从上往下依次执行
2、分支结构:多条路径选择一条
3、循环结构:在规定范围内重复执行


(一)分支结构:
1:if函数
功能:实现分支流
语法:
if(表达式1,表达式2,表达式3)
执行顺序:
执行表达式1,成立返回表达式2的值,不成立则返回表达式3的值
应用:任何地方
例:if(num>10,'true','false')

/*输入年龄提示年龄阶段*/
create FUNCTION test_if(age int) returns CHAR(16)
begin
IF age>60 AND age<=90 THEN RETURN '老奶奶';
ELSEIF age>30 AND age<=60 THEN RETURN '大姐姐';
ELSEIF age>18 AND age<=30 THEN RETURN '小姐姐';
ELSEIF age>12 AND age<=18 THEN RETURN '女孩子';
ELSEIF age>0 AND age<=12 THEN RETURN '小女生';
END IF;

END

drop FUNCTION test_if;
select test_if(6)

2:CASE结构
情况1:一般用于等值判断
语法:
CASE 变量|表达式|字段
WHEN 要判断的值 THEN 返回的值1或语句1;
WHEN 要判断的值 THEN 返回的值2或语句2;
……
ELSE 要返回的值n或语句n;
END CASE

情况2:多重if语句,区间判断
语法:
CASE 变量|表达式|字段
WHEN 要判断的条件1 THEN 返回的值1或语句1;
WHEN 要判断的条件2 THEN 返回的值2或语句2;
……
ELSE 要返回的值n或语句n;
END CASE

特点1:
可以作为表达式,嵌套其他语句使用,放在begin end内外都可以
可以作为单独语句使用,只能放在begin end中
特点2:
如果when的值满足,则执行then后面的语句,并结束case
都不满足,则执行else中的值或语句
特点3:
else可以省略,若else省略,且所有when都不满足,则返回null

例2:

/*输入年龄提示年龄阶段*/
delimiter //
create PROCEDURE test_case(in age int)
BEGIN

CASE
WHEN age>60 AND age<=90 THEN select '老奶奶';
WHEN age>30 AND age<=60 THEN select '大姐姐';
WHEN age>18 AND age<=30 THEN select '小姐姐';
WHEN age>12 AND age<=18 THEN select '女孩子';
WHEN age>0 AND age<=12 THEN select '小女生';
END CASE;
END
//

call test_case(18)

猜你喜欢

转载自www.cnblogs.com/serendipme/p/10785708.html