SQL——流程控制
环境
DBMS:MySQL 8.0.17
工具:Navicat Premium 11.2.16
概述
过程化SQL提供了流程控制语句,主要有条件控制语句和循环控制语句。这些语句都只能在SQL块中使用。
条件控制语句
if语句
IF <条件表达式1> THEN <语句1> ELSEIF <条件表达式2> THEN <语句2> ... ELSE <语句n> END IF;
定义一个函数用于判断年龄的阶段,其中1~10为幼年,11~20为少年,21~30为青年,30~50为中年,50以上为老年:
测试函数judge:
case语句
case语句有2种格式。
第一种格式为:
CASE WHEN <条件表达式1> THEN <语句1> WHEN <条件表达式2> THEN <语句2> ... ELSE <语句n> END CASE;
定义一个函数用于判断年龄的阶段,其中1~10为幼年,11~20为少年,21~30为青年,30~50为中年,50以上为老年:
测试函数judge:
第二种格式为:
CASE <表达式> WHEN <值1> THEN <语句1> WHEN <值2> THEN <语句2> ... ELSE <语句n> END CASE;
定义一个函数用于返回星期名:
测试函数weekname:
循环控制语句
while语句
<标签>:WHILE <循环条件> DO <循环体> END WHILE <标签>;
定义while语句时需要给定一个标签,在end while之后加上标签表示结束的while语句。
执行结果:
repeat语句
<标签>:REPEAT <循环体> UNTIL <结束条件> END REPEAT <标签>;
定义repeat语句时需要给定一个标签,在end repeat之后加上标签表示结束的repeat语句。
执行结果:
循环结束语句
leave语句
leave语句用于结束当前循环。
LEAVE <标签>;
iterate语句
iterate语句用于结束本次循环,进入下一次循环。
ITERATE <标签>;