MySQL 存储过程(二)

本篇继续介绍MySQL存储过程的相关内容。

目录

一、if语句

二、case

三、循环语句

while

loop

repeat


一、if语句

在存储过程中,可以使用if语句进行条件判断,其语法结构如下:

if 判断语句 then

        逻辑语句.....

elseif 判断语句 then

        逻辑语句.....

elseif ......

else

        逻辑语句

end if;

下面我们通过一个案例,来具体使用一下if语句:
创建一个存储过程p4,接收一个参数score,并返回一个参数result,具体的执行逻辑如下:

                score < 60  返回‘不及格’

                score >= 60 && score < 85 返回 “及格”

                score >= 85 返回“优秀”

存储过程的创建过程具体如下:

二、case

存储过程的case实现了类似流程控制的功能,有点类似于switch,其具体语法如下:

语法一:

 case case_value

        when value1 then 逻辑语句

        when value2 then  逻辑语句

        when...

        else 逻辑语句

 end case;

当when 后面的value 与 case_value的值相等时, 就会执行then后面的逻辑语句  。

语法二:

case

        when 判断语句 then 逻辑语句

        when 判断语句 then 逻辑语句

        when.....

        else 逻辑语句

end case;

 当when后面的判断语句成立时,就会执行后面的逻辑语句。

三、循环语句

在存储过程中,可以使用循环逻辑的语句,具体有三种不同类型的循环语句,我们来了解一下:

while

while是有判断条件的循环语句,只有满足条件,才能执行循环体的SQL,具体语法如下:

while 判断语句 do

        逻辑语句

end while;

下面我们通过while来实现一下从1加到10,具体如下:

接下来我们具体调用一下:

 

可以发现成功获得从1加到10的结果了。

loop

loop是一种比较特殊的循环,需要搭配leave和iterate来使用,其中leave表示退出循环,iterate表示跳过本次循环,进入下一次循环,loop如果没有包含leave会进入死循环,使用loop时需要对当前loop进行标记,具体语法如下:

标记:loop

        逻辑语句

 end loop 标记

如果需要跳过本次循环,执行 

iterate 标记 

如果需要跳出循环,执行

leave 标记 

 下面我们使用loop实现一下从1加到10

将wret的值设为0,接下来我们调用一下w2, 

然后我们再来查看一下变量wret的值 

可以发现,成功算出结果了。

repeat

repeat和while类型,都是具体条件的循环语句,只不过while是在执行循环体的逻辑之前进行判断,而repeat则是在执行逻辑之后,具体语法如下:

repeat

 逻辑语句

 until判断语句

end repeat; 

当满足until后面的判断语句时,跳出循环 。

下面我们再创建一个存储过程,这次使用repeat进行循环,具体如下:

然后我们将变量wret修改为0,然后调用w3,

此时,我们再次查看变量wret的值

可以发现使用repeat也运算成功了。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值