mysql存储过程之循环语句(五)

21 篇文章 0 订阅
17 篇文章 0 订阅

1.while循环语句

需求:想数据库表插入20条数据

DELIMITER $$
CREATE PROCEDURE test_while()
BEGIN
    -- 定义循环对象
	DECLARE i INT DEFAULT 0;
    -- 判断是否执行下一次循环
	WHILE(i<20) DO
		BEGIN
            -- 执行循环操作
			SET i =i +1;
			INSERT INTO test_for(id) VALUES(i);
		END;
	END WHILE;
	
END;
$$
DELIMITER ;


CALL test_while();

总结 

1.while语句最基本的机构:while() do .... end while;
2.while判断返回逻辑真或假,表达式可以是任意返回真或假的表达式

 

2.repeat循环语句 

需求同上

DELIMITER $$
CREATE PROCEDURE test_repeat()
BEGIN
    -- 定义循环初始值
	DECLARE i INT DEFAULT 100;
    -- 开始循环
	REPEAT
		BEGIN
			SET i =i +1;
			INSERT INTO test_for(id) VALUES(i);
		END;
    -- 判断是否进行下一次循环
	UNTIL i >= 120
    -- 结束循环
	END REPEAT;
END;
$$
DELIMITER ;


CALL test_repeat();

总结

1.repeat语句最基本的机构:repeat .... until.. end repeat;
2.until判断返回逻辑真或假,表达式可以是任意返回真或假的表达式,只有当表达式为真时,循环结束

3.LOOP

需求:获取由ID为偶数,并且id小于10的记录其名称组成的字符串
DELIMITER &&
CREATE PROCEDURE test_loop()
BEGIN
    -- 定义循环变量
	DECLARE num INT DEFAULT 0;
    -- 定义每次循环得到名称
	DECLARE test_name VARCHAR(255) DEFAULT '';
    -- 定义返回结果
	DECLARE result VARCHAR(255) DEFAULT '';
	
    -- 开始循环
	my_loop :LOOP
	
	    IF(num > 10) THEN
            -- 相当于Java的break
	        LEAVE my_loop;
	    END IF;
	
	    SET num = num + 1;
	
	    IF(num %2 !=0) THEN
            -- 相当于Java的continue
	        ITERATE	my_loop;
	    ELSE
		    SELECT NAME INTO test_name FROM test_score WHERE id = num;
		    SET result = CONCAT(result, ',',test_name);
	    END IF;
	 
	-- 结束循环
	END LOOP;
    -- 返回结果
	SELECT result;
END;
&&
DELIMITER ;

CALL test_loop();

 总结

1.在LOOP语句之前放置一个loop_label循环标签
2.LEAVE语句用于立即退出循环,而无需等待检查条件。类似Java的break。
3.ITERATE语句允许您跳过剩下的整个代码并开始新的迭代。类似Java的continue。

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值