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也运算成功了。 

 

相关推荐

  1. mysql_存储过程

    2024-06-12 13:14:03       62 阅读
  2. MySQL存储过程

    2024-06-12 13:14:03       40 阅读
  3. MySQL-存储过程(PROCEDURE)

    2024-06-12 13:14:03       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-12 13:14:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-12 13:14:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-12 13:14:03       82 阅读
  4. Python语言-面向对象

    2024-06-12 13:14:03       91 阅读

热门阅读

  1. docker run的复杂使用

    2024-06-12 13:14:03       25 阅读
  2. Oracle 最终会淘汰 MySQL 吗?

    2024-06-12 13:14:03       34 阅读
  3. AES加密、解密工具类

    2024-06-12 13:14:03       30 阅读
  4. Linux网络设置

    2024-06-12 13:14:03       23 阅读
  5. Android面试题汇总-Jetpack组件

    2024-06-12 13:14:03       27 阅读
  6. 前端的强缓存和协商缓存

    2024-06-12 13:14:03       30 阅读
  7. ffmpeg的部署踩坑及简单使用方式

    2024-06-12 13:14:03       31 阅读
  8. win10下 mysql8.0.37.0 msi版本安装时出现的问题

    2024-06-12 13:14:03       28 阅读