zoukankan      html  css  js  c++  java
  • MySQL 存储过程控制语句

    1. 变量作用域
      内部的变量在其作用域范围内享有更高的优先权,当执行到end。变量时,内部变量消失,此时已经在其作用域外,变量不再可见了,应为在存储过程外再也不能找到这个申明的变量,但是你可以通过out参数或者将其值指派给会话变量来保存其值。
      mysql > DELIMITER //  
      mysql > CREATE PROCEDURE proc3()  
           -> begin 
           -> declare x1 varchar(5) default 'outer';  
           -> begin 
           -> declare x1 varchar(5) 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+1;  
             -> if var=0 then 
             -> insert into t values(17);  
             -> end if;  
             -> if parameter=0 then 
             -> update t set s1=s1+1;  
             -> else 
             -> update t set s1=s1+2;  
             -> end if;  
             -> end;  
             -> //  
        mysql > DELIMITER ;  
      • case 语句
        mysql > DELIMITER //  
        mysql > CREATE PROCEDURE proc3 (in parameter int)  
             -> begin 
             -> declare var int;  
             -> set var=parameter+1;  
             -> case var  
             -> when 0 then   
             -> insert into t values(17);  
             -> when 1 then   
             -> insert into t values(18);  
             -> else   
             -> insert into t values(19);  
             -> end case;  
             -> end;  
             -> //  
        mysql > DELIMITER ; 
    3. 循环语句
      • while ···· end while 语句
        mysql > DELIMITER //  
        mysql > CREATE PROCEDURE proc4()  
             -> begin 
             -> declare var int;  
             -> set var=0;  
             -> while var<6 do  
             -> insert into t values(var);  
             -> set var=var+1;  
             -> end while;  
             -> end;  
             -> //  
        mysql > DELIMITER ; 
      • repeat···· end repeat 语句
        mysql > DELIMITER //  
        mysql > CREATE PROCEDURE proc5 ()  
             -> begin   
             -> declare v int;  
             -> set v=0;  
             -> repeat  
             -> insert into t values(v);  
             -> set v=v+1;  
             -> until v>=5  
             -> end repeat;  
             -> end;  
             -> //  
        mysql > DELIMITER ; 

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

      • loop ·····end loop 语句
        mysql > DELIMITER //  
        mysql > CREATE PROCEDURE proc6 ()  
             -> begin 
             -> declare v int;  
             -> set v=0;  
             -> LOOP_LABLE:loop  
             -> insert into t values(v);  
             -> set v=v+1;  
             -> if v >=5 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=0;  
           -> LOOP_LABLE:loop  
           -> if v=3 then   
           -> set v=v+1;  
           -> ITERATE LOOP_LABLE;  
           -> end if;  
           -> insert into t values(v);  
           -> set v=v+1;  
           -> if v>=5 then 
           -> leave LOOP_LABLE;  
           -> end if;  
           -> end loop;  
           -> end;  
           -> //  
      mysql > DELIMITER ; 

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

  • 相关阅读:
    DIV+CSS一种简单的左边图片右边多行文字的布局
    超级精简的鼠标触发式下拉菜单
    JQuery全选反选 随其他checkbox自动勾选全选反选
    asp.net后台注册JavaScript
    IE浏览器中iframe背景BODY透明
    iframe自适应高度的超精简方法 IE6/7/8/9 &amp; FF经测试完全通过
    Button1.Attributes.Add() 方法小结
    在美女秘书的身体上寻找股市的趋势!很准的!
    无意中发现google Reader中的内容居然不与RSS源同步!
    参加阿里软件“旺斯卡”,居然给我寄来了1件T恤和1个4GB优盘
  • 原文地址:https://www.cnblogs.com/tannerBG/p/4079074.html
Copyright © 2011-2022 走看看