mysql存儲過程批量向表插入數據
阿新 • • 發佈:2018-07-11
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存儲過程批量向表插入數據