標籤:
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);
mysql while,loop,repeat迴圈,符合條件跳出迴圈