您好我正在尝试向user_acc表插入100-200个新行,但由于某种原因,我当前的代码什么都不做。
DELIMITER //
DECLARE x INT DEFAULT 0;
WHILE x < 200 DO
INSERT INTO `user_acc`(`playRegion`, `firsttimelogin`) VALUES
(RAND() * (6)+1,1) ;
SET x = x +1;
END WHILE;
DELIMITER ;
所以我为每一行添加了playRegion和firsttimelogin,playRegion是随机1-5,而firstimelogin是walways 1.一旦我尝试执行查询,没有任何反应,没有任何错误。
答案 0 :(得分:1)
以下是使用Loop
的存储过程的替代方法:
DROP PROCEDURE IF EXISTS proc_loop_test;
CREATE PROCEDURE proc_loop_test()
BEGIN
DECLARE int_val INT DEFAULT 0;
test_loop : LOOP
IF (int_val = 10) THEN
LEAVE test_loop;
END IF;
INSERT INTO `user_acc`(`playRegion`, `firsttimelogin`) VALUES
(RAND() * (6)+1,1) ;
SET int_val = int_val +1;
END LOOP;
END;
call proc_loop_test;
select * from `user_acc`;
我仅限于10只用于测试
答案 1 :(得分:0)
仅在 BEGIN ... END 复合语句中允许DECLARE 并且必须在任何其他陈述之前开始。
答案 2 :(得分:0)
看起来你正在尝试执行一个MySQL不支持的匿名代码块。
您可以创建一个命名存储过程来执行该代码。
我建议使用mysqlslap
实用程序,而不是实现自己的存储过程,这样可以轻松生成测试数据。
此命令适用于您:
mysqlslap --iterations 200 \
--create-schema=test \
--query="INSERT INTO user_acc(playRegion, firsttimelogin) VALUES (RAND() * (6)+1,1) ;"