我试图在MySQL中创建自己的函数,但是下面的代码不起作用。有任何语法错误,但是30分钟后,我找不到错误所在。有任何想法吗?
DROP FUNCTION IF EXISTS `gps_distance`;;
CREATE FUNCTION `gps_distance`(lat1 FLOAT,lng1 FLOAT,lat2 FLOAT,lng2 FLOAT) RETURNS float
READS SQL DATA
DETERMINISTIC
BEGIN
SET lat1 = lat1 * pi() / 180;
SET lng1 = lng1 * pi() / 180;
SET lat2 = lat2 * pi() / 180;
SET lng2 = lng2 * pi() / 180;
RETURN acos
( cos(lat1)*cos(lng1)*cos(lat2)*cos(lng2)
+ cos(lat1)*sin(lng1)*cos(lat2)*sin(lng2)
+ sin(lat1)*sin(lat2)
) * 6372.795;
END;;
错误在
BEGIN
子句后的第6行报告。您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取在第6行的''附近使用的正确语法
是否应该取决于MySQL版本(我有5.6.21)?在PMA版本(4.3.0)上?我试图从PHP脚本运行此查询,同样的问题。
感谢您的回答。
最佳答案
您确定定界符设置为除分号以外的其他内容吗
DROP FUNCTION IF EXISTS `gps_distance`;
DELIMITER $$
CREATE FUNCTION `gps_distance`(lat1 FLOAT,lng1 FLOAT,lat2 FLOAT,lng2 FLOAT) RETURNS float
READS SQL DATA
DETERMINISTIC
BEGIN
SET lat1 = lat1 * pi() / 180;
SET lng1 = lng1 * pi() / 180;
SET lat2 = lat2 * pi() / 180;
SET lng2 = lng2 * pi() / 180;
RETURN acos
( cos(lat1)*cos(lng1)*cos(lat2)*cos(lng2)
+ cos(lat1)*sin(lng1)*cos(lat2)*sin(lng2)
+ sin(lat1)*sin(lat2)
) * 6372.795;
END $$
DELIMITER ;
关于php - 在MySQL中创建自己的函数时出现语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29303690/