修改函数以调用/单步执行表

时间:2014-06-24 21:22:35

标签: mysql stored-functions

本月早些时候我在一个问题中提供了一个函数,该函数返回给定两个经度和两个纬度点的方位:

DELIMITER $$

DROP FUNCTION IF EXISTS `initial_bearing`$$

CREATE FUNCTION `initial_bearing`(
    lat1 DOUBLE, lon1 DOUBLE, 
    lat2 DOUBLE, lon2 DOUBLE
 ) RETURNS DOUBLE
NO SQL
DETERMINISTIC
COMMENT 'Returns the initial bearing, in degrees, to follow the great circle route
         from point (lat1,lon1), to point (lat2,lon2)'
BEGIN

RETURN (360.0 + 
  DEGREES(ATAN2(
   SIN(RADIANS(lon2-lon1))*COS(RADIANS(lat2)),
   COS(RADIANS(lat1))*SIN(RADIANS(lat2))-SIN(RADIANS(lat1))*COS(RADIANS(lat2))*
        COS(RADIANS(lon2-lon1))
  ))
 ) % 360.0;
END$$

DELIMITER ;

我如何修改它以便它将逐步执行给定的表,并使用每个记录中的MinLatitude,MaxLatitude,MinLongitude,MaxLongitude代替函数中的变量,然后将输出轴承返回到Bearing字段中同样的记录?

1 个答案:

答案 0 :(得分:0)

我误以为存储过程的工作方式与存储的函数有关。事实上,这个过程很好地工作,并且只需要作为查询的一部分来调用,例如从TableA中选择initial_bearing(Lat1,Long1,Lat2,Long2)。我认为如果其他任何初学者都犯了同样的错误,我就把它留下来。对不起浪费带宽。