码迷,mamicode.com
首页 > 数据库 > 详细

mysql存储过程批量向表插入数据

时间:2018-07-11 15:01:23      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:into   drop   roo   root   字段   第一个   pre   var   key   

业务需要,往某个表中批量插入数据,使用存储过程插入

首先,要建立一张mysql表,表明为phone_number, 三个字段,id 自增,number 就是要插入的表格,is_used 表示十分已经使用,默认值为0,未使用

CREATE TABLE `phone_number` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `number` varchar(12) NOT NULL,
  `is_used` tinyint(1) DEFAULT 0 COMMENT 是否已经使用 1 已经使用,0 未使用,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=81 DEFAULT CHARSET=utf8;

在新建存储过程,存储过程名称为batch_insert,传入2个参数,第一个表示开始的号码,把号码当成一个整数。第二个参数是循环插入多少条记录,每插入一次后把插入的号码增加1,再插入。

DELIMITER $$
USE `db_xxxx`$$
DROP PROCEDURE IF EXISTS `batch_insert`$$
CREATE DEFINER=`root`@`%` PROCEDURE `batch_insert`(IN `start_number` BIGINT,IN `counts` BIGINT)
BEGIN 
    DECLARE p_number BIGINT DEFAULT start_number;
    DECLARE stop_number BIGINT DEFAULT start_number;
    SET stop_number=start_number + counts;
    WHILE p_number < stop_number DO
        INSERT INTO phone_number(number) VALUES(p_number); 
        SET p_number=p_number+1; 
    END WHILE ; 
    COMMIT; 
END$$
DELIMITER ;

如下调用带2个参数,表示13535561906开始插入,插入40条记录后停止插入

CALL batch_insert(13535561906,40);

执行结果

技术分享图片

 

mysql存储过程批量向表插入数据

标签:into   drop   roo   root   字段   第一个   pre   var   key   

原文地址:https://www.cnblogs.com/testway/p/9293870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!