在这个简单的过程中,我无法指出语法错误,这让我很生气。
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 ;
答案 0 :(得分:0)
[UPDATEA]
发现主要问题是mysql根本无法创建我的函数。考虑到我拥有在数据库中创建的所有特权,这很奇怪。任何猜测为什么会这样?
答案 1 :(得分:0)
您的代码中没有语法错误。我使用MySQL客户端对其进行了测试,并且效果很好。
然后,我下载了DBeaver并尝试了您的查询。我发现我必须突出显示查询中的所有行,然后使用Ctrl-Enter执行。
如果我不突出显示所有行,则似乎不管设置DELIMITER
都是作为单独的SQL语句单独执行每行。
我现在将卸载DBeaver。看来似乎并不能提高我的生产力。
答案 2 :(得分:0)
在设置新定界符的语句之后添加上一个定界符:
DELIMITER $$;
DELIMITER ;$$