zoukankan      html  css  js  c++  java
  • mysql while,loop,repeat循环,符合条件跳出循环

    1、while循环

    DELIMITER $$
    DROP PROCEDURE IF EXISTS `sp_test_while`$$
    CREATE  PROCEDURE `sp_test_while`(
     IN p_number INT, #要循环的次数
     IN p_startid INT #循环的其实值
    )
    BEGIN  
    DECLARE v_val INT DEFAULT 0;  
    SET v_val=p_startid;
    outer_label:  BEGIN  #设置一个标记
    WHILE v_val<=p_number DO  
        SET v_val=v_val+1;  
        IF(v_val=100)THEN
            LEAVE  outer_label;  #满足条件,终止循环,跳转到end outer_label标记
        END IF;
    END WHILE;  
    SELECT '我是while外,outer_label内的SQL'; #由于这句SQL在outer_label代码块内,所以level后,这句SQL将不会执行;
    #只要是在outer_label代码块内 任意位置 Leave outer_label,那么Leave后的代码将不再执行
    END outer_label;   
     SELECT CONCAT('test',v_val) AS tname;
    END$$
    
    DELIMITER ;
    
    CALL sp_test_while(1000,0);

    2、loop 循环

    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS `sp_testloop`$$
    CREATE  PROCEDURE `sp_testloop`(
     IN p_number INT, #要循环的次数
     IN p_startid INT #循环的其实值
    )
    BEGIN  
        DECLARE v_val INT DEFAULT 0;  
        SET v_val=p_startid;
    
        loop_label:  LOOP   #循环开始
            SET v_val=v_val+1; 
             
            IF(v_val>p_number)THEN
                LEAVE  loop_label;  #终止循环
            END IF;
        END LOOP; 
         SELECT CONCAT('testloop_',v_val) AS tname;
    END$$
    
    delimiter ;
    
    CALL sp_testloop(1000,0);

    3、repeat循环

    DELIMITER $$
    DROP PROCEDURE IF EXISTS `sp_test_repeat`$$
    CREATE  PROCEDURE `sp_test_repeat`(
     IN p_number INT, #要循环的次数
     IN p_startid INT #循环的其实值
    )
    BEGIN  
    DECLARE v_val INT DEFAULT 0;  
    SET v_val=p_startid;
    
     REPEAT  #repeat循环开始
     
        SET v_val=v_val+1; 
          until v_val>p_number #终止循环的条件,注意这里不能使用';'分号,否则报错     
          
     END repeat; #循环结束 
     
     SELECT CONCAT('test',v_val) AS tname;
    END$$
    
    DELIMITER ;
    
    CALL sp_test_repeat(1000,0);
  • 相关阅读:
    [转]K/3加密控制规则
    修改Delphi2009的界面风格
    [转]软件版本号讲解: 什么是Alpha, Beta, RC
    百度程序题目连续数问题
    得到正整数a的16进制表示
    四舍五入至某小数位后返回数字串
    返回相同宽度数字型字符串
    百度程序题目连续数问题 另解
    求二进制表示中1的个数
    六支筷子取其二,恰为一双的概率
  • 原文地址:https://www.cnblogs.com/cyun/p/4308960.html
Copyright © 2011-2022 走看看