如何在MySQL中查明语法错误

问题描述 投票:0回答:3

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

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 ;
mysql sql syntax procedure dbeaver
3个回答
0
投票

[UPDATE]

弄清楚主要问题是mysql在某种程度上根本不创建我的功能。考虑到我拥有在数据库中创建的所有权限,这很奇怪。任何猜测为什么会这样?


0
投票

在设置新分隔符的语句后添加先前的分隔符:

DELIMITER $$;

DELIMITER ;$$


0
投票

您的代码中没有语法错误。我用MySQL客户端测试了它,它工作正常。

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

如果我没有突出显示所有行,则无论设置DELIMITER,它似乎都会单独执行每一行作为单独的SQL语句。

我现在将卸载DBeaver。它似乎不会提高我的生产力。

© www.soinside.com 2019 - 2024. All rights reserved.