我无法在这个简单的过程中查明语法错误,这让我很生气。
DELIMITER $$
DROP PROCEDURE IF EXISTS address_insert$$
CREATE PROCEDURE address_insert()
BEGIN
DECLARE i INT DEFAULT (SELECT COUNT(*) FROM hoop.address);
DECLARE counter INT DEFAULT 0;
WHILE counter < 5 DO
SET i = i + 1;
INSERT INTO hoop.address (adr_id, address, city, country, created_at, lat, lng, updated_at, zip)
VALUES (i, CONCAT("Address-", i), "City", "United States", CURRENT_TIMESTAMP, (SELECT RAND() * (68-60) + 60), (SELECT RAND() * (65-55) + 55), CURRENT_TIMESTAMP, "ZIPCODE");
SET counter = counter + 1;
END WHILE;
END$$
DELIMITER ;
[UPDATE]
弄清楚主要问题是mysql在某种程度上根本不创建我的功能。考虑到我拥有在数据库中创建的所有权限,这很奇怪。任何猜测为什么会这样?
在设置新分隔符的语句后添加先前的分隔符:
DELIMITER $$;
DELIMITER ;$$
您的代码中没有语法错误。我用MySQL客户端测试了它,它工作正常。
然后我下载了DBeaver并尝试了您的查询。我发现我必须突出显示查询中的所有行,然后使用Ctrl-Enter执行。
如果我没有突出显示所有行,则无论设置DELIMITER
,它似乎都会单独执行每一行作为单独的SQL语句。
我现在将卸载DBeaver。它似乎不会提高我的生产力。