MYSQL-表未从过程更新

时间:2018-11-05 02:02:18

标签: mysql phpmyadmin procedure mysql-function

我想得到两个GeoPoint之间的距离(使用LatLong),因为我从提供的解决方案[MySQL Function to calculate distance between two latitudes and longitudes中编写了GETDISTANCE函数。如果我独立调用函数,则它就像魅力一样工作。 根据我的理解,我无法从MySQL中的Function返回device?,所以我创建了Procedure并在过程内部调用了function,如下所示:

ResultSet

我想做的是从用户那里获取一组LatLong参数,并将其与表中的每组LatLong进行比较。从函数获取输出后,我将使用coverageID的where条件更新TransmitterPointsData表。

到目前为止,这是我的第一个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 ; 列中获取所有null值。

先谢谢您

1 个答案:

答案 0 :(得分:0)

尝试用以下内容替换while循环:

magnolia-core.jar

要短得多,并且可以通过限制+偏移量避免行选择的潜在问题(这最好是较差的样式,每次都会给您随机行)。