MySQL流程控制语句解读!
MySQL流程控制语句解读!
在MySQL中,常见的过程式SQL语句可以用在一个存储过程体中。
其中包括:IF语句、CASE语句、LOOP语句、WHILE语句、REPEAT语句、LEAVE语句和ITERATE语句,它们可以进行流程控制。
1、IF语句
IF语句用来进行条件判断,根据不同的条件执行不同的操作。
该语句在执行时首先判断IF后的条件是否为真,则执行THEN后的语句,如果为假则继续判断IF语句直到为真为止,当以上都不满足时则执行ELSE语句后的内容。
IF语句表示形式如下:
1
2
3
4
5
6
7
|
IF condition THEN ... ELSE condition THEN ... ELSE ... END IF |
示例:使用IF语句用来进行条件判断。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
-- 创建存储过程 CREATE PROCEDURE example_if ( IN x INT ) BEGIN IF x = 1 THEN SELECT 1; ELSEIF x = 2 THEN SELECT 2; ELSE SELECT 3; END IF; END ; -- 调用存储过程 CALL example_if(2); |
2、CASE语句
CASE语句为多分支语句结构,该语句首先从WHEN后的VALUE中查找与CASE后的VALUE相等的值,如果查找到则执行该分支的内容,否则执行ELSE后的内容。
CASE语句表示形式如下:
1
2
3
4
5
|
CASE value WHEN value THEN ... WHEN value THEN ... ELSE ... END CASE |
CASE语句另一种语法表示形式如下:
1
2
3
4
5
|
CASE WHEN value THEN ... WHEN value THEN ... ELSE ... END CASE |
示例:使用CASE语句用来进行条件判断。
1
2
3
4
5
6
7
8
9
10
11
12
|
-- 创建存储过程 CREATE PROCEDURE example_case( IN x INT ) BEGIN CASE x WHEN 1 THEN SELECT 1; WHEN 2 THEN SELECT 2; ELSE SELECT 3; END CASE ; END ; -- 调用存储过程 CALL example_case(5); |
3、WHILE循环语句
WHILE循环语句执行时首先判断condition条件是否为真,如果是则执行循环体,否则退出循环。
该语法表示形式如下:
1
2
3
|
WHILE condition DO ... END WHILE; |
示例:使用WHILE循环语句执行求前100的和。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
-- 创建存储过程 CREATE PROCEDURE example_while( OUT sum INT ) BEGIN DECLARE i INT DEFAULT 1; DECLARE s INT DEFAULT 0; WHILE i <= 100 DO SET s = s+i; SET i = i+1; END WHILE; SET sum = s; END ; -- 调用存储过程 CALL example_while(@ sum ); SELECT @ sum ; |
4、LOOP循环语句
LOOP循环没有内置的循环条件,但可以通过LEAVE语句退出循环。
LOOP语句表示形式如下:
1
2
3
|
LOOP ... END LOOP |
LOOP语句允许某特定语句或语句群的重复执行,实现一个简单的循环构造,在循环内的语句一直重复直至循环被退出,退出循环应用LEAVE语句。
LEAVE语句经常和BEGIN...END或者循环一起使用,其表示形式如下:
1
|
LEAVE label |
label是语句中标注的名字,这个名字是自定义的。
示例:使用LOOP循环语句求前100的和。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
-- 创建存储过程 CREATE PROCEDURE example_loop( OUT sum INT ) BEGIN DECLARE i INT DEFAULT 1; DECLARE s INT DEFAULT 0; loop_label:LOOP SET s = s+i; SET i = i+1; IF i>100 THEN -- 退出LOOP循环 LEAVE loop_label; END IF; END LOOP; SET sum = s; END ; -- 调用存储过程 CALL example_loop(@ sum ); SELECT @ sum ; |
5、REPEAT循环语句
REPEAT循环语句先执行一次循环体,之后判断condition条件是否为真,则退出循环,否则继续执行循环。
REPEAT语句表示形式如下:
1
2
3
4
|
REPEAT ... UNTIL condition END REPEAT |
示例:使用REPEAT循环语句求前100的和。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-- 创建存储过程 CREATE PROCEDURE example_repeat( OUT sum INT ) BEGIN DECLARE i INT DEFAULT 1; DECLARE s INT DEFAULT 0; REPEAT SET s = s+i; SET i = i+1; UNTIL i > 100 END REPEAT; SET sum = s; END ; -- 调用存储过程 CALL example_repeat(@ sum ); SELECT @ sum ; |
6、ITERATE语句
ITERATE语句可以出现在LOOP、REPEAT和WHILE语句内,其意为“再次循环”。
语句格式如下:
1
|
ITERATE label |
该语句的格式与LEAVE大同小异,区别在于:LEAVE语句是离开一个循环,而ITERATE语句是重新开始一个循环。
示例:求10以内奇数值的和。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
-- 创建存储过程 CREATE PROCEDURE example_iterate( OUT sum INT ) BEGIN DECLARE i INT DEFAULT 0; DECLARE s INT DEFAULT 0; loop_label:LOOP SET i = i+1; IF i > 10 THEN -- 退出整个循环 LEAVE loop_label; END IF; IF (i mod 2) THEN SET s = s+i; ELSE -- 退出本次循环,继续下一个循环 ITERATE loop_label; END IF; END LOOP; SET sum = s; END ; -- 调用存储过程 CALL example_iterate(@ sum ); SELECT @ sum ; |
总结
以上为个人经验,希望能给大家一个参考。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需99元,即可下载本站文章涉及的文件和软件。
共有 0 条评论