25-mysql--流程控制结构

分类

顺序结构:程序从上往下依次执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码

分支结构

1 if 函数
功能:实现简单的双分支
语法:

if(表达式1,表达式2,表达式3)
执行顺序:如果1成立,则返回2的值,否则返回3的值

2 if 结构:只能放在begin end结构中
功能:实现多重分支

语法:
if 条件1 then 语句1;
else if 条件2 then 语句2;
...
[else 语句n;]
end if;

案例:根据传入的成绩划分等级
CREATE FUNCTION test_if(score INT) RETURNS CHAR
BEGIN
	IF score>=90 AND score<=100 THEN RETURN 'A';
	ELSEIF score>=80 THEN RETURN 'B';
	ELSEIF score>=70 THEN RETURN 'C';
	ELSE RETURN 'D';
	END IF
END $

3 case结构
特点:
1 可以作为表达式,嵌套在其他语句中使用,可以放在任何地方,begin end中或begin end 外;
作为独立的语句去使用时,只能放在begin end中;
2 如果when中的值满足条件,则执行对应的then后面的语句,并结束case;
如果都不满足,则执行else中的语句或值;
else可以省略,如果else省略,且所有when条件都不满足,则返回null

语法:

情况一:类似C#或java中switch
case 变量|表达式|字段
	When 要判断的值 Then 返回的值1
	when 要判断的值 Then 返回的值2
	...
	else 返回的值n
End

情况二:类似C#或java中多重if语句
语法:
Case
	When 要判断的条件1 Then 返回的值1或语句1;
	When 要判断的条件2 Then 返回的值2或语句2;
	...
	else 要返回的值n或语句n;
End Case;

案例:

创建存储过程,根据传入的成绩,来显示等级,比如传入的成绩:90-100,显示A...
CREATE PROCEDURE test_case(IN score INT)
BEGIN
	CASE 
	WHEN score >=90 AND score<=100 THEN SELECT 'A';
	WHEN score>=80 THEN SELECT 'B';
	WHEN score>=70 THEN SELECT 'C';
	ELSE SELECT 'D';
	END CASE;
END $
CALL test_case(98)$

猜你喜欢

转载自blog.csdn.net/weixin_40719943/article/details/106911011