mysql这几种语句标签,你用过几个-ag捕鱼王app官网

当前位置:ag捕鱼王app官网 > > 数据库 > mysql >

mysql这几种语句标签,你用过几个

作者:迹忆 最近更新:2022/11/19 浏览次数:

《mysql存储过程细节窥探》这篇文章中我们简单介绍了存储过程的使用,其中在创建存储过程的语法中有begin……end。除了begin……end之外,在存储过程的存储体内可以使用的语句标签有下面几种:

[begin_label:] begin
    [statement_list]
end [end_label]
 
[begin_label:] loop
    statement_list
end loop [end_label]
 
[begin_label:] repeat
    statement_list
until search_condition
end repeat [end_label]
 
[begin_label:] while search_condition do
    statement_list
end while [end_label]

下面我们对上述语句分别进行一下解释:

begin_label 如果要给出begin_label,则后面必须带着冒号(:)。并且给出了begin_label,最后不一定非得跟着end_label。但是,如果给出end_label,那end_label必须和begin_label相同。

end_label 对于这个标签,不能在没有begin_label的情况下单独给出end_label。

还有一点需要说明,对于这些label,每一层中的label必须是唯一的,不能相同。并且每个label的字符串长度最长为16个字符。

下面我们举个例子。

例一

mysql>delimiter //
mysql>create procedure doiterate(p1 int)
       -->begin
       -->  label1: loop
       -->   set p1 = p1 1;
       -->   if p1 < 10 then iterate label1; end if;
       -->   leave label1;
       -->  end loop label1;
       -->end;
mysql>delimiter ;

上面的例子中label1就是上面我们说到的begin_label和end_label。根据上面我们的说明,上面的例子也可以改成如下的形式。

例二

mysql>delimiter //
mysql>create procedure doiterate(p1 int)
       -->begin
       -->  label1: loop
       -->   set p1 = p1 1;
       -->   if p1 < 10 then iterate label1; end if;
       -->   leave label1;
       -->  end loop;
       -->end;
mysql>delimiter ;

接下来我们分别看一下上述几种语句标签的应用。

1. begin……end

begin … end主要用于写复合语句的。一个复合语句可能会包含多条语句,这些语句都是由begin … end界定的。就像我们下面这个例子。

例三

mysql> delimiter //
mysql> create procedure adddata()
         -->begin
         -->  declare n int default 0;
         -->  while n<100000
         -->  do
         -->       insert into proced(name,type) values(‘迹忆博客’,’onmpw’);
         -->       set n = n 1;
         -->  end while;
         -->end
         -->//
mysql> delimiter ;

并且begin … end块儿是可以被嵌套的。而且还可以被冠以名称。

例四

mysql> delimiter //
mysql> create procedure adddata()
         -->label1:begin
         -->  declare n int default 0;
         -->  while n<100000
         -->  do
         -->    insert into proced(name,type) values(‘迹忆博客’,’onmpw’);
         -->  set n = n 1;
         -->  end while;
         -->end label1
         -->//
mysql> delimiter ;

2. loop

[begin_label:] loop
    statement_list
end loop [end_label]

loop 作用是重复执行statement_list,它可能包含一条或多条执行语句。这些语句都是用分号(;)来界定的,所以之前我们需要先使用delimiter //命令改变客户端命令行的界定符。这个命令在《mysql存储过程细节窥探》中有说过。对于这个标签的使用实例如下。

例五

mysql> delimiter //
mysql>create procedure doiterate(p1 int)
       -->begin
       -->    label1: loop
       -->      set p1 = p1 1;
       -->      if p1 < 10 then
       -->           iterate label1;
       -->      end if;
       -->      leave label1;
       -->    end loop label1;
       -->    set @x = p1;
       -->end;
mysql> delimiter ;

loop的需要借助iterate 来重复,而loop的循环结束需要有leave来完成,当然也可以使用return。这里的leave我们可以理解成编程语言中的break来跳出循环。return可以理解成编程语言中的return,亦可以跳出循环,不过这个是整个程序的退出。

3. repeat

[begin_label:] repeat
       statement_list
until search_condition
end repeat [end_label]

同样repeat重复执行块儿内的statement_list,直到until的条件不成立的时候结束循环。因此,我们可以看出statement_list至少被执行一次。此语句标签可以理解成编程语言中的do{}while();

使用示例如下。

例六

mysql> delimiter //
mysql> create procedure dorepeat(p1 int)
    -->begin
    -->   set @x = 0;
    -->   repeat
    -->     set @x = @x 1;
    -->   until @x > p1
    -->end repeat;
    --> end
    --> //
mysql>delimiter ;
mysql> call dorepeat(1000);
mysql> select @x;
---------
| @x  |
---------
| 1001 |
---------

4. while

[begin_label:] while search_condition do
    statement_list
end while [end_label]

while表示在此块儿内的statement_list被重复执行,只要search_condition为真就会执行。也就是说此while语句标签相当于编程语言中的while(){}语句。

使用示例如下。

例七

mysql> delimiter //
mysql>create procedure dowhile()
       -->begin
       -->    declare v1 int default 5;
       -->    label1:while v1 > 0 do
       -->             set v1 = v1 - 1;
       -->    end while label1;
       -->end//
mysql>delimiter ;

以上就是对几种语句标签的简单介绍。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 mysql 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:mysql

当你需要在 mysql 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

发布时间:2024/03/26 浏览次数:176 分类:mysql

本教程演示了如何在 mysql 中重置自动增量。

在 mysql 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:mysql

本教程介绍了 mysql 中的刷新权限命令,用于刷新授权表并影响允许的更改。

在 mysql 中设置时区

发布时间:2024/03/26 浏览次数:93 分类:mysql

在本教程中,我们将学习如何在 mysql 服务器中更改时区。

发布时间:2024/03/26 浏览次数:199 分类:mysql

本教程演示如何在 mysql 中转换为整数。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图