mysql 流程控制语句_MYSQL中的流程控制语句

一、条件语句

(1) IF条件语句

语法:

IF search_condition THEN

statement_list

ELSE

statement_list

END IF;

例:比较两个数大小

DELIMITER//

CREATE PROCEDURE test_procedure(i int,j int)

BEGIN

DECLARE s varchar(16);

IF ij then

set s='i>j';

else

set s='i=j';

END IF;

SELECT s;

END

//

DELIMITER;

调用:call test_procedure(3,6);

(2)CASE语句

语法:

CASE case_value

WHEN when_value THEN

statement_list

ELSE

statement_list

END CASE;

例:比较两个数大小

DELIMITER//

CREATE PROCEDURE test_procedure(i int,j int)

BEGIN

DECLARE s varchar(16);

case when i-j<0 then

set s='i0 then

set s='i>j';

else

set s='i=j';

end case;

SELECT s;

END

//

DELIMITER;

调用:call test_procedure(3,6);

二、循环语句

(1)LOOP循环

语法:

label: LOOP

statement_list

IF exit_condition THEN

LEAVE label;

END IF;

END LOOP label;

例:存储过程(累加功能)

DELIMITER//

CREATE PROCEDURE test_procedure(n int)

BEGIN

DECLARE s int;

DECLARE i int;

set s=0,i=1;

loop_label:LOOP

IF i<=n THEN

set s=s+i;

set i=i+1;

ELSE

LEAVE loop_label;

END IF;

END LOOP;

SELECT s;

END

//

DELIMITER;

调用:call test_procedure(5);

(2)WHILE循环,满足条件时执行循环体(先检查条件是否满足再进行操作)

语法:

WHILE search_condition DO

statement_list

END WHILE;

例:存储过程(累加功能)

DELIMITER//

CREATE PROCEDURE test_procedure(n int)

BEGIN

DECLARE s int;

DECLARE i int;

set s=0,i=1;

WHILE i<=n DO

set s=s+i;

set i=i+1;

END WHILE;

SELECT s;

END

//

DELIMITER;

调用:call test_procedure(5);

(3)REPEAT循坏,满足条件时跳出循环(执行操作后检查条件是否满足)

语法:

REPEAT

statement_list

UNTIL search_condition

END REPEAT;

例:存储过程(累加功能)

DELIMITER//

CREATE PROCEDURE test_procedure(n int)

BEGIN

DECLARE s int;

DECLARE i int;

set s=0,i=1;

REPEAT

set s=s+i;

set i=i+1;

UNTIL i>n

END REPEAT;

SELECT s;

END

//

DELIMITER;

调用:call test_procedure(5);

(4)ITERATE迭代:通过引用复合语句的标号,来从新开始复合语句

例:存储过程(累加功能)

DELIMITER//

CREATE PROCEDURE test_procedure(n int)

BEGIN

DECLARE s int DEFAULT 0;

DECLARE i int DEFAULT 1;

lables_loop:LOOP

set s=s+i;

set i=i+1;

IF i<=n then

iterate lables_loop;

end if;

if i>n then

leave lables_loop;

end if;

END LOOP;

SELECT s;

END

//

DELIMITER;

调用:call test_procedure(5);

注:MySQL的LOOP, LEAVE 和ITERATE语句(类似Continue、Break的写法)

和REPEAT和while语句不同,LOOP、LEAVE、ITERATE更像其他编程语言中的goto语句。

LOOP要设定一个label指定循环的开始位置,而LEAVE则像其他语言中的Break会离开LOOP指定的块,

iterate则像其他语言中的Continue会再次回到LOOP开始的语句。

(5)lables标签:可以用在begin、repeat、while或loop语句前,语句标号只能在合法的语句前使用,可以跳出循环,使运行指令达到复合语句的最后一步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值