-
流程控制结构有哪些
-
顺序结构:从上到下顺序执行;
-
分支结构:程序从一条或多条路径中选择一条去执行;
-
循环结构:在满足一定条件下,重复去执行一段代码;
-
-
分支结构
-
if函数
-
功能:实现简单的双分支;
-
语法: if(表达式1,表达式2,表达式3);
-
执行顺序:如果表达式1成立,返回表达式2的结果,否则返回表达式3的结果;
-
应用:任何地方;
-
-
case结构
-
情况一:类似于java中的switch语句,一般用于等值判断。
-
语法:
-
case 条件表达式 | 变量 | 字段
-
when 要判断的变量1 then 返回的值或者语句1;
-
when 要判断的变量1 then 返回的值或者语句2;
-
....
-
else 返回的值或者语句n;
-
end case;
-
-
demo:
-
-
-
SELECT
CASE parent_id
WHEN 0 THEN '00';
WHEN 1 THEN '11';
ELSE 'OTHERS';
END AS parent_id_new , parent_id , type_id , type_name
FROM tdb_goods_types;
-
情况二:类似于java中的多重IF语句,一般用于实现区间判断。
-
demo:
-
SELECT
-
CASE
-
WHEN parent_id < 3 THEN '<3';
-
WHEN parent_id >= 3 AND parent_id < 5 THEN '>=3 && <5';
-
ELSE '>=5';
-
END AS parent_id_new ;
-
parent_id , type_id , type_name
-
FROM tdb_goods_types;
-
-
语法:
-
case
-
when 要判断的条件1 then 返回的值或者语句1;
-
when 要判断的条件2 then 返回的值或者语句2;
-
.....
-
else 返回的值或者语句n;
-
end case;
-
-
-
-
特点:
-
可以作为表达式,嵌套在sql语句的任何地方(可以放在begin end中,也放在begin end 外),也可以作为独立语句去使用 (只能放在begin end中)。
-
demo:作为独立语句放在begin end中
-
CREATE PROCEDURE mycase1(in score float)
-
BEGIN
-
CASE
-
WHEN score >= 90 THEN SELECT 'A';
-
WHEN score >= 80 AND score <= 90 THEN SELECT 'B';
-
WHEN scoer >=70 AND score <= 80 THEN SELECT 'C';
-
ELSE SELECT 'D';
-
END case;
-
END $
-
-
-
顺序执行,,满足when的条件就执行then中的语句,跳出执行,如果都不满足就执行else中语句,else可以省略,如果条件都不满足就返回null。
-
-
-
if结构
-
功能:实现多重分支;
-
语法:
-
if 条件1 then 执行的语句1;
-
elseif 条件2 执行的语句2;
-
.....
-
else 执行的语句n;# else可以省略
-
end if;
-
-
应用场景:只能应用在begin end中
-
demo:根据输入的数据,返回数据的级别CREATE FUNCTION test1(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 $
-
-
-
循环结构
-
分类:
-
while , loop, repeat
-
-
循环控制:
-
iterate :类似于 continue 结束本次循环 继续下一次;
-
leave :类似于breake 跳出,结束循环;
-
-
语法:
-
while语法
-
[标记循环名:]while 循环条件 do
-
循环体;
-
end while 标记循环名;
-
-
loop语法 常用来模拟死循环
-
[标记循环名:]loop
-
循环体;
-
end loop [标签名];
-
-
repeat 类似于do while
-
语法:
-
[循环名:]repeat
-
循环体;
-
until 结束循环的条件;
-
end repeat [标签];
-
-
-
-