程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql while,loop,repeat循環,符合條件跳出循環,mysqlrepeat

mysql while,loop,repeat循環,符合條件跳出循環,mysqlrepeat

編輯:MySQL綜合教程

mysql while,loop,repeat循環,符合條件跳出循環,mysqlrepeat


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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved