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 ; 

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

  • 相关阅读:
    windows常规
    oracle常规操作
    idea使用
    java-maven
    java-rabbimq
    centos7 rabbitMq 安装教程
    Leetcode 332.重新安排行程
    Leetcode 334.递增的三元子序列
    Leetcode 331.验证二叉树的前序序列化
    Leetcode 330.按要求补齐数组
  • 原文地址:https://www.cnblogs.com/tannerBG/p/4079074.html
Copyright © 2011-2022 走看看