我是靠谱客的博主 现代咖啡,这篇文章主要介绍流程控制(Flow Control),现在分享给大家,希望可以做个参考。

流程控制(Flow Control)

MySQL中用来构造流程控制语句的有:IF语句、CASE语句、LOOP语句、LEAVE语句、ITERATE语句、REPEAT语句和WHILE语句。每一个流程中可以包含一个单独的语句,或者是使用BEGIN…END构造复杂语句,构造可以被嵌套。在存储过程和存储函数中,想要构造复杂的特定功能,就离不开流程控制语句。

注意:本文的SQL 在 MySQL 8.0版本中测试通过

IF语句

基本语法

IF语句包含多个条件判断,根据判断结果为TRUEFALSE来执行相应的语句,语法格式如下:

复制代码
1
2
3
4
5
6
IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF

search_condition:表示判断表达式,当表达式为真时,则执行对应THEN关键字后的statement_list中的语句;

statement_list:表示不同表达式为真时的执行语句。

语法示例

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DELIMITER $; create function if_test(n int, m int) returns varchar(32) DETERMINISTIC begin declare s varchar(16); if n > m then set s = '>'; elseif n = m then set s = '='; else set s = '<'; end if; set s = concat(n, ' ', s, ' ', m); return s; end;

CASE语句

基本语法

CASE是另一种条件判断语句,该语句有两种格式。

语法格式1:

复制代码
1
2
3
4
5
6
7
CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END CASE

case_value:表示条件判断的表达式,决定了哪一个WHEN自己会被执行;

when_value:表示表达式可能的值,当when_value表达式与case_value表达式结果相同时,则执行对应THEN关键字后的statement_list中的语句;

statement_list:表示不同when_value值的执行语句。

语法格式2:

复制代码
1
2
3
4
5
6
7
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE

search_condition:表示判断表达式,当表达式为真时,则执行对应THEN关键字后的statement_list中的语句;

statement_list:表示不同表达式为真时的执行语句;

语法示例

复制代码
1
2
3
4
5
6
7
8
9
10
DELIMITER $; create procedure case_test(v int) begin case v when 0 then select 'Bad'; when 1 then select 'Good'; else select 'Wrong value'; end case; end;

LOOP语句

基本语法

LOOP语句循环语句用来重复执行语句,它创建了一个循环操作过程,并不进行条件判断。LOOP内的语句一直被重复执行直到使用LEAVE语句跳出循环,而使用ITERATE语句用于将执行顺序转到语句段的开头处。语法结构如下:

复制代码
1
2
3
4
[begin_label:] LOOP statement_list END LOOP [end_label]

begin_label/end_label:表示LOOP语句的标注名称,该参数可以省略;

statement_list:表示循环执行的语句。

语法示例

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
DELIMITER $; create procedure loop_test(n int) begin label1: loop set n = n + 1; if n < 10 then iterate label1; end if; leave label1; end loop label1; set @x = n; end;

REPEAT语句

基本语法

REPEAT语句用于创建一个带有条件判断的循环过程,每次语句执行完毕之后,会对条件表达式进行判断,如果表达式为真,则循环结束;否则,重复执行循环中的语句。语法结构如下:

复制代码
1
2
3
4
5
[begin_label:] REPEAT statement_list UNTIL search_condition END REPEAT [end_label]

begin_label/end_label:表示REPEAT语句的标注名称,该参数可以省略;

statement_list:表示循环执行的语句;

search_condition:在其为真前,重复执行循环内的语句。

语法示例

复制代码
1
2
3
4
5
6
7
8
9
10
DELIMITER $; create procedure repeat_test(n int) begin set @x = 0; repeat set @x = @x + 1; until @x > n end repeat; end;

WHILE语句

基本语法

WHILE语句创建一个带条件判断的循环过程 与REPEAT不同的是,WHILE在语句执行时,先对指定的条件进行判断,如果为真,则执行循环内的语句,否则退出循环。语法结构如下:

复制代码
1
2
3
4
[begin_label:] WHILE search_condition DO statement_list END WHILE [end_label]

while_lable为WHILE语句的标注名称,Expr_condition,为进行判断的表达式,如果表达式为真,WHILE语句内的语句,或语句群就被执行,直至expr_condition为假,退出循环。

语法示例

复制代码
1
2
3
4
5
6
7
8
9
DELIMITER $; create procedure while_test(n int) begin set @x = 0; while @x < n do set @x = @x + 1; end while; end;

【作者:墨叶扶风 http://blog.csdn.net/yefufeng】

最后

以上就是现代咖啡最近收集整理的关于流程控制(Flow Control)的全部内容,更多相关流程控制(Flow内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部