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);


獲取【下載地址】 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章