我试图在MySQL 5.5.38中编写我第一个存储的函数,但是我无法通过令人讨厌的语法错误。我已经检查过MySQL文档,但是我仍然看不到问题所在,并且错误消息仅显示You have an error in your SQL syntax; blah blah blah ... at line 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
你尝试IF EXISTS distm删除'DROP功能之后;'? – 2014-10-06 17:05:32
它绝对不会说'等等等等等等..如果你想得到进一步的帮助,发布确切的错误。 – Rahul 2014-10-06 17:06:08
@Rahul你说得对,我已经添加了确切的错误信息。 – 2014-10-06 17:25:37