delimiter $$
/* 参数为 int类型 */
create function distance(lat1 DOUBLE,longt1 DOUBLE,lat2 DOUBLE,longt2 DOUBLE)
/*设置返回值类型 为double*/
returns double
/* 函数开始 */
begin
/* 的定义局部变量,有默认值*/
declare PI double default 3.14159265358979323;
declare R double default 6371229;
declare dis double default 0;
declare x double default 0;
declare y double default 0;
set x=(longt2 - longt1) * PI * R* COS(((lat1 + lat2) / 2) * PI / 180) / 180;
set y = (lat2 - lat1) * PI * R / 180;
set dis = SQRT(x*x+y*y);
return dis;
end $$
delimiter ;
select distance(34.8082342, 113.6125439, 34.8002478, 113.659779);
drop function distance
每次对函数改动一定要删除函数
前后的delimiter不能扔,函数名为distance,返回值类型,用SQL可用的数学函数COS计算余弦,用SQRT计算平方根
参考:http://my.eoe.cn/isnull/archive/4846.html