gpt4 book ai didi

mysql - 创建存储函数时出现语法错误

转载 作者:行者123 更新时间:2023-11-29 23:39:40 25 4
gpt4 key购买 nike

我正在尝试在 MySQL 5.5.38 中编写我的第一个存储函数,但我无法克服烦人的语法错误。我已经检查了 MySQL 文档,但我仍然看不出问题是什么,并且错误消息仅显示 You have an error in your SQL语法;等等等等……在第 1 行

代码如下:

DELIMITER $$

CREATE FUNCTION distm (lat1 DOUBLE, lng1 DOUBLE, lat2 DOUBLE, lng2 DOUBLE)
RETURNS DOUBLE NO SQL DETERMINISTIC
BEGIN
DECLARE radius DOUBLE;
SET radius = 6371008.771415059;

DECLARE x1, y1, x2, y2, dlat, dlng DOUBLE;
SET x1 = RADIANS(lng1);
SET y1 = RADIANS(lat1);
SET x2 = RADIANS(lng2);
SET y2 = RADIANS(lat2);
SET dlng = x2 - x1;
SET dlat = y2 - y1;

DECLARE dist DOUBLE;
SET dist = 2 * radius * ASIN(
SQRT(
POW(SIN(dlat / 2), 2)
+ COS(y1) * COS(y2) * POW(SIN(dlng / 2), 2)
)
);
RETURN dist;
END$$

DELIMITER ;

编辑:确切的错误消息如下:

SQL Error [1064] [42000]: 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 'DELIMITER $$

CREATE FUNCTION distm (lat1 DOUBLE, lng1 DOUBLE, lat2 DOUBLE, lng2' at line 1

最佳答案

尝试删除 DELIMITER $$ 之前的 DROP 语句,然后再次运行。

另外,将 RETURNS DOUBLE NO SQL DETERMINISTIC 行更改为下面的内容。请注意,它不是 NO SQL DETERMINISTIC 而是 NOT DETERMINISTIC

RETURNS DOUBLE NOT DETERMINISTIC

关于mysql - 创建存储函数时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26221118/

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