1. 程式人生 > >儲存過程製造資料

儲存過程製造資料

 

 由於之前在寫好專案後,由於專案中需要進行sql效能測試,但實際由於資料庫中的實際資料量相對比較少,測試效果不佳,所以想著直接採用儲存過程,直接生成資料,這樣也快速高效。

 

編寫mysql儲存過程,以下以實際專案為例


 78 -- 建立儲存過程
 79 CREATE DEFINER=`root`@`localhost` PROCEDURE `add_storage_memory`( IN n INT )
 80 BEGIN
 81         -- 定義引數
 82     DECLARE
 83         i INT DEFAULT
1;-- 定義 84 DECLARE commodity_id VARCHAR(40); 85 DECLARE receipt_id VARCHAR(40); 86 DECLARE rec_code VARCHAR(20);<br>    set autocommit=0;--設定不自動提交 87 -- while 迴圈來一下,生成百萬資料就靠它 88 WHILE 89 i < n DO 90 -- 獲取 uuid 91 --
迴圈體裡面進行一系列的業務操作即可,比如A表插入資料,b表插入資料 92 set commodity_id = UUID( ); 93 94 SET receipt_id = UUID( ); 95 96 SET rec_code = CONCAT( "00000", i ) ;-- 插入商品 97 INSERT INTO `res_provider_product` ( `id`, `provider_id`, `name`, `specification`, `unit`, `price`, `category_id`, `category`, `creation`, `create_time`, `updater`, `update_time`, `status` )
98 VALUES 99 ( commodity_id, '98989b55-09f7-4871-b5c9-085590e786b2', '竹牙籤', '', NULL, NULL, '905f87e7-21bc-47e1-9e61-a85645524cb2', '其他', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-05-18 19:52:04', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-05-18 19:52:04', 1 );-- 插入定價 100 INSERT INTO `res_product_price` ( `id`, `product_id`, `price`, `start_time`, `end_time`, `creation`, `create_time`, `updater`, `update_time`, `status` ) 101 VALUES 102 ( UUID( ), commodity_id, 2.00, '2018-06-09', NULL, 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:27:43', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:27:43', 50 );-- 插入入庫單 103 INSERT INTO `bis_receipt` ( `id`, `code`, `storage_id`, `provider_Name`, `provider_id`, `total_amount`, `business_time`, `creation`, `create_time`, `updater`, `update_time`, `status` ) 104 VALUES 105 ( receipt_id, rec_code, '4512ef23-b20b-40f0-9ca1-b3316c4cc6c6', '庫存供應商', '98989b55-09f7-4871-b5c9-085590e786b2', 4.00, '2018-06-09 00:00:00', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:30:27', 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', '2018-06-09 16:30:27', 50 );-- 插入入庫單子表 106 INSERT INTO `bis_receipt_b` ( 107 `id`, 108 `receipt_id`, 109 `code`, 110 `product_id`, 111 `product_name`, 112 `specification`, 113 `unit`, 114 `quantity`, 115 `price`, 116 `total_price`, 117 `category_id`, 118 `category`, 119 `rec_dept`, 120 `comment`, 121 `creation`, 122 `create_time`, 123 `updater`, 124 `update_time`, 125 `status` 126 ) 127 VALUES 128 ( 129 UUID( ), 130 receipt_id, 131 rec_code, 132 commodity_id, 133 '竹牙籤', 134 '', 135 NULL, 136 2.00, 137 2.00, 138 4.00, 139 '905f87e7-21bc-47e1-9e61-a85645524cb2', 140 '其他', 141 NULL, 142 '', 143 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', 144 '2018-06-09 16:30:27', 145 'cd9335a9-06e6-4a39-84ec-2dee58378b4c', 146 '2018-06-09 16:30:27', 147 1 148 ); 149 //最後面新增++操作 150 SET i = i + 1; 151 152 END WHILE; 153   commit;--提交事務 154 END