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. PHP 流程管理

    添加新流程页面: <div> 请选择流程节点:<br /><br /> <?php session_start(); include("../DBD ...

  2. Spring JdbcTemplate 方法详解

    JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句: update方法及batchUpdate方法:update方法用于执行新增.修 ...

  3. 如何处理 在html中 li 的高度自适应(且li里面的内容有浮动的情况下)

    废话不多说,我们写贴出代码 这个是 Html 代码 <div class="main"> <ul> <li> <div class=&qu ...

  4. 关于 Word Splitting 和 IFS 的三个细节

    在 Bash manual 里叫 Word Splitting,在 Posix 规范里叫 Field Splitting,这两者指的是同一个东西,我把它翻译成“分词”,下面我就说三点很多人都忽略掉(或 ...

  5. 大熊君JavaScript插件化开发------(实战篇之DXJ UI ------ Tab功能扩展完结版)

    一,开篇分析 Hi,大家好!大熊君又和大家见面了,还记得上一篇文章吗.主要讲述了一个“Tab”插件是如何组织代码以及实现的”,以及过程化设计与面向对象思想设计相结合的方式是 如何设计一个插件的,两种方 ...

  6. bzoj1854 游戏

    Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性 ...

  7. Go - 项目收藏

    谷歌官方维护了一个基于go语言的开源项目列表: https://github.com/golang/go/wiki/Projects Web框架 web.go.beego Go项目 httpmq:A ...

  8. 【重点】Shell入门教程:流程控制(3)条件判断式的真假值

    之前曾提到,在Bash中什么是真什么是假,是以命令的结束状态是否为0来做判断.传回0,即为真:传回非0,即为假. 在Bash中,这种可以影响程序流程的式子,称为条件判断式.判断式的操作数分成“单元”及 ...

  9. 第2月第25天 BlocksKit

    1.blockskit https://github.com/zwaldowski/BlocksKit bk_showAlertViewWithTitle 2.toast +(void)showToa ...

  10. Node.js入门学习笔记(一)

    先来个最常见的"Hello World!". 打开你最喜欢的编辑器(我用的是Sublime Text),创建一个helloWorld.js的文件.我们要做的就是向stdout输出& ...