MySql 程序,重复50次,生成随机值,检查是否存在
MySql procedure, repeat 50 times, generate random values, check if exist
我正在尝试在 mysql 中执行存储过程,但我经常遇到语法错误。将不胜感激任何帮助。谢谢你。代码在这里:
BEGIN
/* loop to get 50 locations,
while loop to check if generated location is already in db
if in DB, generate again, else move on*/
SET @i = 0;
REPEAT
BEGIN
DECLARE RandomDesertCount INT DEFAULT 1;
DECLARE RandomDesertX INT;
DECLARE RandomDesertY INT;
DECLARE RandomJungleCount INT DEFAULT 1;
DECLARE RandomJungleX INT;
DECLARE RandomJungleY INT;
WHILE RandomDesertCount > 0 DO
SET RandomDesertX = RAND() * (200) - 100;
SET RandomDesertY = RAND() * (200) - 100;
SET RandomDesertCount = SELECT COUNT(*) FROM locations where x = RandomDesertX AND y = RandomDesertY;
END WHILE;
WHILE RandomJungleCount > 0 DO
SET RandomJungleX = RAND() * (200) - 100;
SET RandomJungleY = RAND() * (200) - 100;
SET RandomJungleCount = SELECT COUNT(*) FROM locations where x = RandomJungleX AND y = RandomJungleY;
END WHILE;
INSERT INTO locations (x, y, type) VALUES (RandomDesertX, RandomDesertY, 'DESERT');
INSERT INTO locations (x, y, type) VALUES (RandomJungleX, RandomJungleY, 'JUNGLE');
END;
UNTIL @i = 49
END REPEAT;
END; ```
Set = select ...无效用括号select括起来
设置 = (select...) 如
SET RandomDesertCount = (SELECT COUNT(*) FROM locations where x = RandomDesertX AND y = RandomDesertY);
SET RandomJungleCount = (SELECT COUNT(*) FROM locations where x = RandomJungleX AND y = RandomJungleY);
我正在尝试在 mysql 中执行存储过程,但我经常遇到语法错误。将不胜感激任何帮助。谢谢你。代码在这里:
BEGIN
/* loop to get 50 locations,
while loop to check if generated location is already in db
if in DB, generate again, else move on*/
SET @i = 0;
REPEAT
BEGIN
DECLARE RandomDesertCount INT DEFAULT 1;
DECLARE RandomDesertX INT;
DECLARE RandomDesertY INT;
DECLARE RandomJungleCount INT DEFAULT 1;
DECLARE RandomJungleX INT;
DECLARE RandomJungleY INT;
WHILE RandomDesertCount > 0 DO
SET RandomDesertX = RAND() * (200) - 100;
SET RandomDesertY = RAND() * (200) - 100;
SET RandomDesertCount = SELECT COUNT(*) FROM locations where x = RandomDesertX AND y = RandomDesertY;
END WHILE;
WHILE RandomJungleCount > 0 DO
SET RandomJungleX = RAND() * (200) - 100;
SET RandomJungleY = RAND() * (200) - 100;
SET RandomJungleCount = SELECT COUNT(*) FROM locations where x = RandomJungleX AND y = RandomJungleY;
END WHILE;
INSERT INTO locations (x, y, type) VALUES (RandomDesertX, RandomDesertY, 'DESERT');
INSERT INTO locations (x, y, type) VALUES (RandomJungleX, RandomJungleY, 'JUNGLE');
END;
UNTIL @i = 49
END REPEAT;
END; ```
Set = select ...无效用括号select括起来
设置 = (select...) 如
SET RandomDesertCount = (SELECT COUNT(*) FROM locations where x = RandomDesertX AND y = RandomDesertY);
SET RandomJungleCount = (SELECT COUNT(*) FROM locations where x = RandomJungleX AND y = RandomJungleY);