MySQL:while循环(存储过程、函数)

一、创建student表

-- ---------------------------- -- Table structure for students -- ---------------------------- DROP TABLE IF EXISTS `students`; CREATE TABLE `students` ( `id` int NOT NULL AUTO_INCREMENT COMMENT 主键id, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 姓名, `code` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 学号, `class` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 一班 COMMENT 所在班级, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ---------------------------- -- Records of students -- ---------------------------- INSERT INTO `students` VALUES (1, 张三, 202001001, 一班); INSERT INTO `students` VALUES (2, 李四, 202001002, 一班); INSERT INTO `students` VALUES (3, 王五, 202001003, 一班); INSERT INTO `students` VALUES (4, 赵六, 202001004, 一班);

示意图:

二、使用while循环向students表中插入数据

(存储过程)

1. 定义存储过程

DELIMITER $$
 
DROP PROCEDURE if EXISTS insertStudents;    # 如果存在test存储过程则删除
CREATE procedure insertStudents() # 创建无参存储过程,名称为insertStudents
BEGIN
	DECLARE i INT;  # 申明变量
	SET i = 0;  # 变量赋值
	WHILE i<5 DO # 结束循环的条件: 当i大于5时跳出while循环
		INSERT INTO students(name, code, class) VALUES(xxx, 2020010 + i + 10, 一班);  # 往students表添加数据
		SET i = i+1;    # 循环一次,i加1
	END WHILE;  # 结束while循环
	SELECT * FROM sudents; # 查看students表数据
END $$ # 结束定义语句

DELIMITER ; # 重新将分隔符设置为;

执行结果:

2.调用存储过程

CALL insertStudents(); #调用存储过程

3.删除存储过程

DROP PROCEDURE insertStudents;  #删除存储过程

(函数)

1. 创建函数

SET GLOBAL log_bin_trust_function_creators=TRUE;

DELIMITER $$
DROP FUNCTION if EXISTS insertStudents;    # 如果存在insertStudents函数则删除
CREATE FUNCTION insertStudents(i INT(10)) RETURNS INT(10) # 创建函数 学习while循环的用法
BEGIN
		WHILE i<5 DO # 结束循环的条件: 当i大于5时跳出while循环
			INSERT INTO students(name, code, class) VALUES(xxx, 2020010 + i + 10, 一班);  # 往students表添加数据
			SET i = i+1;    # 循环一次,i加1
		END WHILE;  # 结束while循环
    RETURN (SELECT COUNT(*) FROM students);
END $$
DELIMITER ;

执行结果:

2. 调用函数

SELECT insertStudents(3); #调用函数

执行结果:

3. 删除函数

DROP FUNCTION insertStudents;    #删除函数
经验分享 程序员 微信小程序 职场和发展