gpt4 book ai didi

mysql - 如何在 MySQL Workbench 中创建和执行过程

转载 作者:可可西里 更新时间:2023-11-01 06:35:50 25 4
gpt4 key购买 nike

我在 MySQL 工作台中使用 SQL 编辑器创建了一个空间表 Points。要填写此表,以下是我正在使用的代码。

CREATE PROCEDURE fill_points( 
IN size INT(10)
)
BEGIN
DECLARE i DOUBLE(10,1) DEFAULT size;

DECLARE lon FLOAT(7,4);
DECLARE lat FLOAT(6,4);
DECLARE position VARCHAR(100);

-- Deleting all.
DELETE FROM Points;

WHILE i > 0 DO
SET lon = RAND() * 360 - 180;
SET lat = RAND() * 180 - 90;

SET position = CONCAT( 'POINT(', lon, ' ', lat, ')' );

INSERT INTO Points(name, location) VALUES ( CONCAT('name_', i), GeomFromText(position) );

SET i = i - 1;
END WHILE;
END

当我执行它时,它显示错误

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 1

执行语句

CALL fill_points(1000);

显示相同的错误

我什至不知道我的做法是否正确。

谁能帮帮我...

最佳答案

您是否已结束整个查询?尝试设置一个分隔符,并在 END 之后使用它,以便服务器知道您已完成命令。

delimiter //
CREATE PROCEDURE fill_points(
IN size INT(10)
)
BEGIN
DECLARE i DOUBLE(10,1) DEFAULT size;

DECLARE lon FLOAT(7,4);
DECLARE lat FLOAT(6,4);
DECLARE position VARCHAR(100);

-- Deleting all.
DELETE FROM Points;

WHILE i > 0 DO
SET lon = RAND() * 360 - 180;
SET lat = RAND() * 180 - 90;

SET position = CONCAT( 'POINT(', lon, ' ', lat, ')' );

INSERT INTO Points(name, location) VALUES ( CONCAT('name_', i), GeomFromText(position) );

SET i = i - 1;
END WHILE;
END //
delimiter ;

另外,顺便说一下

虽然 DELETE FROM TABLE 确实从表中删除了所有数据,但 TRUNCATE table 的速度更快。除非您有充分的理由使用 DELETE(它们存在),否则 TRUNCATE 可能就是您想要的。

关于mysql - 如何在 MySQL Workbench 中创建和执行过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10084458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com