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. android md5加密与rsa加解密实现代码

    import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security. ...

  2. ajax 的返回值类型

    ajax的dataType类型有三种:text,json,xml. text类型: 主页面: $.ajax({   url:"chuli.php",   dataType:&quo ...

  3. foreach statement cannot operate on variables of type 'System.Web.UI.WebControls.Table' because 'System.Web.UI.WebControls.Table' does not contain a public definition for 'GetEnumerator'

    错误:foreach statement cannot operate on variables of type 'System.Web.UI.WebControls.Table' because ' ...

  4. 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱

    引言 本篇文章主要介绍.NET中6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱.文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆:最后介绍值类型和引用类型,并 ...

  5. GDB调试D语言

    GDB7.2后开始支持对D语言的调试 GUI前端 http://beej.us/guide/bggdb/#compiling GDB教程 http://blog.csdn.net/haoel/arti ...

  6. CSS3 时钟

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. R语言——七月

    这两个月没有写什么代码.也没做什么大项目,基本就是对以前写的那个用ggplot2可视化数据的项目做一些增增补补,大部分技术难关都在ggplot2和R语言EXCEL处理这里解决并总结了.然后业余帮人修改 ...

  8. Alpha版本冲刺总结——曙光初现

    No Bug 031402401鲍亮 031402402曹鑫杰 031402403常松 031402412林淋 031402418汪培侨 031402426许秋鑫 项目预期计划 界面设计 androi ...

  9. jquery 事件委托

    什么事件委托? DOM在为页面中的每个元素分派事件时,相应的元素一般都在事件冒泡阶段处理事件.在类似 body > div > a 这样的结构中,如果单击a元素,click事件会从a一直冒 ...

  10. js获取网站项目根路径

    //js获取项目根路径,如: http://localhost:8083/uimcardprj function getRootPath(){ //获取当前网址,如: http://localhost ...