Я хочу получить расстояние между двумя GeoPoints (используя LatLong), для этого я написал функцию GETDISTANCE из предоставленного решения [ MySQL Function для вычисления расстояния между двумя широтами и долготами . Если я вызываю функцию независимо, она работает как шарм.
Насколько я понимаю, я не могу вернуть 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 из таблицы. И после получения выходных данных из функции я обновляю таблицу TransmitterPointsData, где условие для coverID.
Это мой первый запрос MySQL, пока я следовал синтаксису, но я не знаю, почему я получаю все null
значения в DynammicDistance
столбце.
Заранее спасибо