我想得到两个地球点之间的距离(使用latlong),因为我从提供的解决方案[mysql函数]中编写了getdistance函数来计算两个纬度和经度之间的距离。如果我独立调用函数,它就像魅力一样。据我所知,我不能回来了 ResultSet
从mysql中的函数开始,我创建了过程并调用了过程中的函数,如下所示:
DELIMITER $$
CREATE PROCEDURE GetNearByGeoPoints(IN Lat REAL, IN Longi REAL)
BEGIN
DECLARE v_max int;
DECLARE v_counter int unsigned default 0;
SET @v_max = (SELECT COUNT(*) FROM TransmitterPointsData);
START TRANSACTION;
WHILE v_counter < v_max
DO
SELECT @coverageID :=CoverageID, @tableLatitude := Latitude, @tableLongitude :=Longitude FROM TransmitterPointsData LIMIT v_counter,1;
SET @Dist= GETDISTANCE(Lat, Longi, tableLatitude, tableLongitude);
UPDATE TransmitterPointsData SET DynamicDistance = @Dist WHERE CoverageID= @coverageID;
set v_counter=v_counter+1;
END WHILE;
COMMIT;
SELECT * FROM TransmitterPointsData;
END $$
DELIMITER ;
我要做的是从用户那里获取一组latlong参数,并将其与表中的每一组latlong参数进行比较。在得到函数的输出后,我用coverageid上的where条件更新transmitterpointsdata表。
这是我的第一个mysql查询到目前为止,我是以下语法,但我不知道为什么我得到所有 null
中的值 DynammicDistance
列。
先谢谢你
1条答案
按热度按时间mm5n2pyu1#
尝试用以下内容替换while循环:
要短得多,而且可以通过limit+offset避免行选择的潜在问题(最好是糟糕的样式,每次都会给您一个随机行)。