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。