mysql 修改函数 用户_mysql 创建用户自定义函数

为了防止分号产生的中途输出,自己定义一个 分隔符,这里仿照mysql官方的例子:使用两个美元符号 $$ 作为分割符号,下面这段代码就是创建一个自定义mysql函数的原型了,可以在这个基础上修改,这样,创建函数就不会产生很多错误了.

set global log_bin_trust_function_creators = 1; -- 开启bin_log 复制 函数创建

DROP FUNCTION IF EXISTS hello; -- 删掉已经存在的

DELIMITER $$    -- 定义分隔符,必须要有,可以不是$$

CREATE FUNCTION hello( s varchar(30)) -- 多个参数用,分割 参数的类型必须是mysql列存在的类型

RETURNS VARCHAR(255)                  -- 指定返回值类型,如果你不确定返回文本长度,可以使用text

BEGIN

DECLARE str varchar(255) default 'hello '; -- 定义一个变量,可以指定默认值

SET str = concat(str,s);                    -- 设置改边变量的值

RETURN str;                                 -- 返回值

END $$                                          -- 注意看清楚了,这个end后面有你在前面定义的分割符号

DELIMITER $$                                    -- 好,这里结束。

/**

*开启数据库自定义函数功能

*/

set global log_bin_trust_function_creators=1;

/*

* 计算poi点距离

*

*/

DELIMITER $$

CREATE DEFINER = CURRENT_USER FUNCTION `getDistance`(`lon1` float,`lat1` float,`lon2` float,`lat2` float)

RETURNS double

begin

declare d double;

declare radius int;

set radius = 6378140; #假设地球为正球形,直径为6378140米

set d = (2*ATAN2(SQRT(SIN((lat1-lat2)*PI()/180/2)

*SIN((lat1-lat2)*PI()/180/2)+

COS(lat2*PI()/180)*COS(lat1*PI()/180)

*SIN((lon1-lon2)*PI()/180/2)

*SIN((lon1-lon2)*PI()/180/2)),

SQRT(1-SIN((lat1-lat2)*PI()/180/2)

*SIN((lat1-lat2)*PI()/180/2)

+COS(lat2*PI()/180)*COS(lat1*PI()/180)

*SIN((lon1-lon2)*PI()/180/2)

*SIN((lon1-lon2)*PI()/180/2))))*radius;

return d;

END $$

DELIMITER $$;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值