您的位置:首页 > 数据库 > SQL

mysql while,loop,repeat循环,符合条件跳出循环

2015-12-04 15:57 651 查看

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循环[b][b]下载地址[/b][/b]

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: