如何确定MySQL中的语法错误

时间:2019-03-18 13:37:06

标签: mysql sql syntax procedure dbeaver

在这个简单的过程中,我无法指出语法错误,这让我很生气。

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 ;

3 个答案:

答案 0 :(得分:0)

[UPDATEA]

发现主要问题是mysql根本无法创建我的函数。考虑到我拥有在数据库中创建的所有特权,这很奇怪。任何猜测为什么会这样?

答案 1 :(得分:0)

您的代码中没有语法错误。我使用MySQL客户端对其进行了测试,并且效果很好。

然后,我下载了DBeaver并尝试了您的查询。我发现我必须突出显示查询中的所有行,然后使用Ctrl-Enter执行。

如果我不突出显示所有行,则似乎不管设置DELIMITER都是作为单独的SQL语句单独执行每行。

我现在将卸载DBeaver。看来似乎并不能提高我的生产力。

答案 2 :(得分:0)

在设置新定界符的语句之后添加上一个定界符:

DELIMITER $$;

DELIMITER ;$$