MySQL CREATE FUNCTION 在 END IF 上中断
Posted
技术标签:
【中文标题】MySQL CREATE FUNCTION 在 END IF 上中断【英文标题】:MySQL CREATE FUNCTION breaking on END IF 【发布时间】:2013-05-12 14:07:22 【问题描述】:我正在尝试创建一个函数来计算两个纬度/经度点之间的距离;但是,CREATE FUNCTION 在函数体的END IF;
部分中断(通过删除IF/ELSE/END
块确认)。
有什么想法吗?我想保留 M / KM 的差异,以免在应用程序中添加计算。
DELIMITER $$
CREATE FUNCTION HAVERSINE
(
from_latitude DECIMAL(30, 15),
from_longitude DECIMAL(30, 15),
to_latitude DECIMAL(30, 15),
to_longitude DECIMAL(30, 15),
unit VARCHAR(20)
)
RETURNS DECIMAL(30, 15)
DETERMINISTIC
BEGIN
DECLARE radius DECIMAL(30, 5);
DECLARE distance DECIMAL(30, 15);
IF(unit = 'MILES') THEN SET radius = '3959';
ELSE IF(unit = 'KILOMETRES' OR unit = 'KM') THEN SET radius = '6371.3929';
ELSE SET radius = '3959';
END IF;
SET distance = (
radius *
ACOS(
COS(RADIANS(from_latitude)) *
COS(RADIANS(to_latitude)) *
COS(RADIANS(to_longitude) - RADIANS(from_longitude)) +
SIN(RADIANS(from_latitude)) *
SIN(RADIANS(to_latitide))
)
);
RETURN distance;
END
【问题讨论】:
【参考方案1】:您可能忘记在末尾添加分隔符,并切换回标准分隔符:
用以下代码替换最后一行:
END$$
DELIMITER ;
【讨论】:
【参考方案2】:我刚刚注意到 ELSE 和 IF 之间的空格。我的错。删除那些,它的工作原理。
【讨论】:
以上是关于MySQL CREATE FUNCTION 在 END IF 上中断的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 5.7 create VIEW or FUNCTION or PROCEDURE
mysql安装问题mysqld: Can‘t create directory ‘E: oftmysqlmysql-5.7.19-winx64data‘ 两种解决办法
mysql 安装问题二:mysqld: Can't create directory 'E:Softwaremysql-5.7.24-winx64data' (Errc(示例代