mysql - 具有多个参数和返回类型的存储函数

标签 mysql

我正在尝试实现以下存储过程,但它没有被创建:

  DELIMITER  //
CREATE Function 'geodistkm'   
(lat1  FLOAT ,  lon1  FLOAT,  lat2 FLOAT ,  lon2 FLOAT) 
returns FLOAT
BEGIN
 DECLARE pi, q1, q2, q3 FLOAT;
 DECLARE rads FLOAT DEFAULT 0;
 SET pi = PI();
 SET lat1 = lat1 * pi / 180;
 SET lon1 = lon1 * pi / 180;
 SET lat2 = lat2 * pi / 180;
 SET lon2 = lon2 * pi / 180;
 SET q1 = COS(lon1-lon2);
 SET q2 = COS(lat1-lat2);
 SET q3 = COS(lat1+lat2);
 SET rads = ACOS( 0.5*((1.0+q1)*q2 - (1.0-q1)*q3) ); 
 RETURN 6378.388 * rads;
END ;
//

DELIMITER ;

我似乎无法弄清楚它出了什么问题。

最佳答案

进行了以下更改:

DELIMITER  //
CREATE FUNCTION  geodistkm  
(lat1  FLOAT ,  lon1  FLOAT,  lat2 FLOAT ,  lon2 FLOAT) 
RETURNS  FLOAT
BEGIN
 DECLARE pi, q1, q2, q3 FLOAT;
 DECLARE rads FLOAT DEFAULT 0;
 SET pi = PI();
 SET lat1 = lat1 * pi / 180;
 SET lon1 = lon1 * pi / 180;
 SET lat2 = lat2 * pi / 180;
 SET lon2 = lon2 * pi / 180;
 SET q1 = COS(lon1-lon2);
 SET q2 = COS(lat1-lat2);
 SET q3 = COS(lat1+lat2);
 SET rads = ACOS( 0.5*((1.0+q1)*q2 - (1.0-q1)*q3) ); 
 RETURN 6378.388 * rads;
END //


DELIMITER ;

关于mysql - 具有多个参数和返回类型的存储函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12501027/

相关文章:

php - 如何保护 php 中的数据库配置

mysql - 如何从 mysql 中的表中创建选择动态字段?

MySQL查询分配错误

mysql - 哪种方法可以更快地检查重复条目,然后创建新条目?

php - 通过循环访问数组内容

php - 在 MySQL 和 PHP 中使用聚合字符串函数

mysql - 我的 SQL 有什么问题? #1089 - 不正确的前缀键

mysql - 如何在 MySQL 字段中选择以逗号分隔的字符串中的单词?

python - Django 1.8 : Throwing ImportError: No module named 'MySQLdb'

mysql - 我可以在 jdbc 中调用一个存储过程,它使用 mysql 返回一个表吗?