说明
在平时的开发工作中经常需要创建大量的测试数据,手动插入显然不现实。这个时候我们就需要使用存储过程来为我们批量插入数据,这里简单介绍一下存储过程的例子。
示例表
CREATE TABLE `z_generate` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL,
`gmt_create` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
存储过程函数
/**
* 加 // 代表默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。
* 因为mysql一遇到分号,它就要自动执行。 即,在语句RETURN '';时,mysql解释器就要执行了。
* 这种情况下,就需要事先把delimiter换成其它符号,如//或$$
*/
delimiter //
/**创建存储过程**/
create procedure generator()
/**方法开始固定语法**/
begin
/**定义变量**/
declare i int;
declare originName varchar(50);
declare targetName varchar(50);
declare gmtCreate timestamp;
set i = 0;
set originName = '蕾欧娜';
while i < 100 DO
set i = i + 1;
set targetName = concat(originName, i);
set gmtCreate = date_add(curdate(), interval i day);
insert into z_generate(`name`, `gmt_create`) values (targetName, gmtCreate);
end while;
end;
//
/**执行存储过程**/
call generator()