1. 程式人生 > >mysql存儲過程批量向表插入數據

mysql存儲過程批量向表插入數據

sts procedure 批量 count primary mysql存儲過程 mage 批量插入 incr

業務需要,往某個表中批量插入數據,使用存儲過程插入

首先,要建立一張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存儲過程批量向表插入數據