1. 变量作用域
    内部的变量在其作用域范围内享有更高的优先权,当执行到end。变量时,内部变量消失,此时已经在其作用域外,变量不再可见了,应为在存储过程外再也不能找到这个申明的变量,但是你可以通过out参数或者将其值指派给会话变量来保存其值。

    mysql > DELIMITER //
    mysql > CREATE PROCEDURE proc3()
    -> begin
    -> declare x1 varchar() default 'outer';
    -> begin
    -> declare x1 varchar() default 'inner';
    -> select x1;
    -> end;
    -> select x1;
    -> end;
    -> //
    mysql > DELIMITER ;
  2. 条件语句
    • if-then -else 语句

      mysql > DELIMITER //
      mysql > CREATE PROCEDURE proc2(IN parameter int)
      -> begin
      -> declare var int;
      -> set var=parameter+;
      -> if var= then
      -> insert into t values();
      -> end if;
      -> if parameter= then
      -> update t set s1=s1+;
      -> else
      -> update t set s1=s1+;
      -> end if;
      -> end;
      -> //
      mysql > DELIMITER ;
    • case 语句
      mysql > DELIMITER //
      mysql > CREATE PROCEDURE proc3 (in parameter int)
      -> begin
      -> declare var int;
      -> set var=parameter+;
      -> case var
      -> when then
      -> insert into t values();
      -> when then
      -> insert into t values();
      -> else
      -> insert into t values();
      -> end case;
      -> end;
      -> //
      mysql > DELIMITER ;
  3. 循环语句
    • while ···· end while 语句

      mysql > DELIMITER //
      mysql > CREATE PROCEDURE proc4()
      -> begin
      -> declare var int;
      -> set var=;
      -> while var< do
      -> insert into t values(var);
      -> set var=var+;
      -> end while;
      -> end;
      -> //
      mysql > DELIMITER ;
    • repeat···· end repeat 语句
      mysql > DELIMITER //
      mysql > CREATE PROCEDURE proc5 ()
      -> begin
      -> declare v int;
      -> set v=;
      -> repeat
      -> insert into t values(v);
      -> set v=v+;
      -> until v>=
      -> end repeat;
      -> end;
      -> //
      mysql > DELIMITER ;

      它在执行操作后检查结果,而while则是执行前进行检查。

    • loop ·····end loop 语句
      mysql > DELIMITER //
      mysql > CREATE PROCEDURE proc6 ()
      -> begin
      -> declare v int;
      -> set v=;
      -> LOOP_LABLE:loop
      -> insert into t values(v);
      -> set v=v+;
      -> if v >= then
      -> leave LOOP_LABLE;
      -> end if;
      -> end loop;
      -> end;
      -> //
      mysql > DELIMITER ;

      loop循环不需要初始条件,这点和while 循环相似,同时和repeat循环一样不需要结束条件, leave语句的意义是离开循环。

  4. LABLES 标识
    LABLES(例如 LOOP_LABLE:)可以用在begin repeat while 或者loop 语句前,语句标号只能在合法的语句前面使用。可以跳出循环,使运行指令达到复合语句的最后一步。
  5. ITERATE 迭代
    mysql > DELIMITER //
    mysql > CREATE PROCEDURE proc10 ()
    -> begin
    -> declare v int;
    -> set v=;
    -> LOOP_LABLE:loop
    -> if v= then
    -> set v=v+;
    -> ITERATE LOOP_LABLE;
    -> end if;
    -> insert into t values(v);
    -> set v=v+;
    -> if v>= then
    -> leave LOOP_LABLE;
    -> end if;
    -> end loop;
    -> end;
    -> //
    mysql > DELIMITER ;

    通过引用复合语句的标号,来从新开始复合语句

MySQL 存储过程控制语句的更多相关文章

  1. mysql存储过程详解

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

  2. mysql存储过程学习

    一.存储过程的创建 语法: CREATE PROCEDURE sp_name (参数)合法的SQL语句 mysql> delimiter // mysql> CREATE PROCEDUR ...

  3. mysql存储过程详细教程

    记录mysql存储过程中的关键语法:DELIMITER //  声明语句结束符,用于区分;CREATE PROCEDURE demo_in_parameter(IN p_in int)  声明存储过程 ...

  4. Mysql存储过程总结

    1.     关于MySQL的存储过程 存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.好在MySQL 5.0终于开始已经支持存储过 ...

  5. MySQL存储过程中的3种循环

    在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体 ...

  6. mysql 存储过程详解 存储过程

    mysql存储过程详解 1.      存储过程简介         我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成 ...

  7. MySQL存储过程详解 mysql 存储过程

    原文地址:MySQL存储过程详解  mysql 存储过程作者:王者佳暮 mysql存储过程详解 1.     存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储 ...

  8. MySQL存储过程学习笔记

    MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.MySQL 5.0终于开始支持存储过程了. MySQL的关键字大小写通用.该学习笔记对关键字使用大写:变量名,表名使用小写. ...

  9. MySQL存储过程详解 mysql 存储过程(二)

    mysql存储过程详解 1.      存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL ...

随机推荐

  1. 线程间通信 GET POST

    线程间通信有三种方法:NSThread   GCD  NSOperation       进程:操作系统里面每一个app就是一个进程. 一个进程里面可以包含多个线程,并且我们每一个app里面有且仅有一 ...

  2. Web前端框架

    框架框架,先框后架.你觉得不方便或者麻烦的地方就像是第一个框(frame)字一样,有点限制住你的感觉.为啥现在你没有觉得有架(work)的感觉呢?其实也在你的问题中提到了:1. 入行时间短,工作比较闲 ...

  3. nginx虚拟主机配置小结

    nginx的安装在lnmp环境搭建中已经介绍过了,配置文件在安装目录下的conf子目录下,主要主要分成四部分:main(全局设置).server(主机设置).upstream(负载均衡服务器设置).l ...

  4. .net core

  5. VBA笔记(二)——基础语法

    数据类型 VBA提供了15种标准数据类型,具体见下表: 变量 Sub 变量学习() 'Dim 变量名 As 数据类型 Dim str1 As String '声明定长的String变量 '使用变量类型 ...

  6. LYDSY热身赛 escape

    Description 给出数字N(1<=N<=10000),X(1<=x<=1000),Y(1<=Y<=1000),代表有N个敌人分布一个X行Y列的矩阵上矩形的行 ...

  7. 微信"流量红包"的玩法攻略 广东移动用户有福啦

    前面我们说了广东移动联合微信正式推出流量红包业务,移动终于hold不住了,想要借此挽回一些些损失.只可惜,现在只是广东小范围测试,其他地区的用户暂时还没有这等福利.那么微信"流量红包&quo ...

  8. c++笔记整理

    一:导读 假设编写了一个C++程序,如何让他允许起来呢,这取决于计算机环境和所使用的C++编译器. 1.使用文本编辑器编写程序,并将其保存在文档中,====此就是源代码 2.编译源代码,编译过程就意味 ...

  9. Shell脚本

    shell script,是一种为shell编写的脚本程序. 业界所说的shell通常是指shell脚本.shell和shell script.

  10. Python自动化之django的ORM操作——Python源码

    """ The main QuerySet implementation. This provides the public API for the ORM. " ...