實驗中經常會遇到需要多條數據的情況就想到了用SQL語句循環生成數據
DROP PROCEDURE if EXISTS test_insert; DELIMITER ;; CREATE PROCEDURE test_insert() BEGIN DECLARE y BIGINT DEFAULT 1; WHILE y<100000 DO INSERT INTO `sshshop`.`product` (`pname`, `market_price`, `shop_price`, `image`, `pdesc`, `is_hot`, `pdate`, `csid`) VALUES ('Thinkpad', '5999', '5099', 'products/dn2.jpg', 'Thinkpad', '1', '2018-05-09 14:23:07', '26'); SET y=y+1; END WHILE ; commit; END;; CALL test_insert();
運行這個需要點時間:
當然可以在插入的時候在名字屬性上該些變動:
DROP PROCEDURE if EXISTS test_insert;
DELIMITER ;;
CREATE PROCEDURE test_insert()
BEGIN
DECLARE y BIGINT DEFAULT 1;
DECLARE n VARCHAR(255);
DECLARE b VARCHAR(255);
WHILE y<50000
DO
SET b="師傅送";
SET n=CONCAT("美了美",y,b,y);
INSERT INTO `sshshop`.`product` (`pname`, `market_price`, `shop_price`, `image`, `pdesc`, `is_hot`, `pdate`, `csid`) VALUES (n, '5999', '5099', 'products/dn2.jpg', 'Thinkpad', '1', '2018-05-09 14:23:07', '26');
SET y=y+1;
END WHILE ;
commit;
END;;
CALL test_insert();
這樣就保證插入的數據不重復更具有測試性
還有就是雙重循環插入數據:
DELIMITER ;; CREATE PROCEDURE test_insert() BEGIN DECLARE a INT DEFAULT 1; DECLARE b TINYINT DEFAULT 1; WHILE (a <= 100) DO -- repeat SET a = a + 1; -- select a; WHILE (b <=20) DO insert into school_sp_mj(school_id,mojor_id,status) values(a,b,1); SET b = b + 1; -- select b; END WHILE; SET b = 1; -- select a; -- until a >= i_PlayerCount -- end repeat; END WHILE; commit; END;; CALL test_insert();