当前位置: 代码网 > it编程>数据库>Mysql > MySQL流程控制语句解读

MySQL流程控制语句解读

2024年11月04日 Mysql 我要评论
在mysql中,常见的过程式sql语句可以用在一个存储过程体中。其中包括:if语句、case语句、loop语句、while语句、repeat语句、leave语句和iterate语句,它们可以进行流程控

在mysql中,常见的过程式sql语句可以用在一个存储过程体中。

其中包括:if语句、case语句、loop语句、while语句、repeat语句、leave语句和iterate语句,它们可以进行流程控制。

1、if语句

if语句用来进行条件判断,根据不同的条件执行不同的操作。

该语句在执行时首先判断if后的条件是否为真,则执行then后的语句,如果为假则继续判断if语句直到为真为止,当以上都不满足时则执行else语句后的内容。

if语句表示形式如下:

if condition then
	...
else condition then
	...
else
	...
end if

示例:使用if语句用来进行条件判断。

-- 创建存储过程
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语句表示形式如下:

case value
	when value then ...
	when value then ...
	else ...
end case

case语句另一种语法表示形式如下:

case
	when value then ...
	when value then ...
	else ...
end case

示例:使用case语句用来进行条件判断。

-- 创建存储过程
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条件是否为真,如果是则执行循环体,否则退出循环。

该语法表示形式如下:

while condition do
...
end while;

示例:使用while循环语句执行求前100的和。

-- 创建存储过程
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语句表示形式如下:

loop
	...
end loop

loop语句允许某特定语句或语句群的重复执行,实现一个简单的循环构造,在循环内的语句一直重复直至循环被退出,退出循环应用leave语句。

leave语句经常和begin...end或者循环一起使用,其表示形式如下:

leave label

label是语句中标注的名字,这个名字是自定义的。

示例:使用loop循环语句求前100的和。

-- 创建存储过程
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语句表示形式如下:

repeat
	...
	until condition
end repeat

示例:使用repeat循环语句求前100的和。

-- 创建存储过程
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语句内,其意为“再次循环”。

语句格式如下:

iterate label

该语句的格式与leave大同小异,区别在于:leave语句是离开一个循环,而iterate语句是重新开始一个循环。

示例:求10以内奇数值的和。

-- 创建存储过程
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;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com