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 ; 

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

  • 相关阅读:
    Rotation Kinematics
    离职 mark
    PnP 问题方程怎么列?
    DSO windowed optimization 代码 (4)
    Adjoint of SE(3)
    IMU 预积分推导
    DSO windowed optimization 代码 (3)
    DSO windowed optimization 代码 (2)
    OKVIS 代码框架
    DSO windowed optimization 代码 (1)
  • 原文地址:https://www.cnblogs.com/tannerBG/p/4079074.html
Copyright © 2011-2022 走看看