MySQL存儲過程用法舉例

創建一個存儲過程範例


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,用來給別的測試程序使用,比如做批量插入數據等時,會比較方便。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章