創建一個存儲過程範例
CREATE DEFINER=`root`@`localhost` PROCEDURE `test_myisam`()
begin
declare i int default 1;
while i < 1000
do
INSERT INTO `epa_monit_alarm_data_myisam` (alarm_status,
data_type,
enterprise_code,
object_id,
date,
create_time,
tanker_id,
oil_gun,
gas_liquid_ratio,
impermeability,
fluidic_resistor,
zero_pressure_tank,
vacuum_valve_condition,
critical_pressure_state,
post_processing_device_status
)
VALUES ( 0, 2, '2019080002', '202004081846332005', '2020-04-08 18:46:33', '2020-04-08 18:59:09', '04', '01', '0', NULL, NULL, NULL, NULL, NULL, NULL);
set i=i+1;
end while;
commit;
end
調用存儲過程,可以界面化調用,也可以執行如下命令即可:
call test_myisam();
如圖這個demo,可以用來實現批量插入數據,做一些測試之類的,批量插入1000次。
存儲過程用法示例
批量構造UUID
先創建一個接收uuid的測試表:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for test_uuid
-- ----------------------------
DROP TABLE IF EXISTS `test_uuid`;
CREATE TABLE `test_uuid` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`str` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '主鍵',
`create_date` datetime(0) NULL DEFAULT NULL COMMENT '創建時間',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 111 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
再創建一個批量插入uuid的測試存儲過程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `test_innodb`()
begin
declare i int default 1;
while i < 100
do
-- 批量生成uuid的測試數據
INSERT INTO `test_uuid`( `str`, `create_date`) VALUES ( (select REPLACE(uuid(), '-', '')), NOW() );
set i=i+1;
end while;
commit;
end
這樣,我們每次只要執行這個存儲過程,就能獲得一組uuid,用來給別的測試程序使用,比如做批量插入數據等時,會比較方便。