gpt4 book ai didi

SELECT 语句中的 MySQL 存储过程变量

转载 作者:IT老高 更新时间:2023-10-29 00:14:03 25 4
gpt4 key购买 nike

我正在尝试创建一个存储过程。这是我到目前为止(不工作):

DELIMITER |
CREATE PROCEDURE getNearestCities(IN cityID INT)
BEGIN
DECLARE cityLat FLOAT;
DECLARE cityLng FLOAT;
SET cityLat = SELECT cities.lat FROM cities WHERE cities.id = cityID;
SET cityLng = SELECT cities.lng FROM cities WHERE cities.id = cityID;
SELECT *, HAVERSINE(cityLat,cityLng, cities.lat, cities.lng) AS dist FROM cities ORDER BY dist LIMIT 10;
END |

HAVERSINE 是我创建的一个运行良好的函数。如您所见,我正在尝试从 cities 表中获取城市的 ID,然后将 cityLat 和 cityLng 设置为该记录的其他一些值。我显然在这里使用 SELECT 做错了。

这有可能吗?似乎应该如此。任何帮助都将不胜感激。

最佳答案

更正了一些内容并添加了替代选择 - 根据需要删除。

DELIMITER |

CREATE PROCEDURE getNearestCities
(
IN p_cityID INT -- should this be int unsigned ?
)
BEGIN

DECLARE cityLat FLOAT; -- should these be decimals ?
DECLARE cityLng FLOAT;

-- method 1
SELECT lat,lng into cityLat, cityLng FROM cities WHERE cities.cityID = p_cityID;

SELECT
b.*,
HAVERSINE(cityLat,cityLng, b.lat, b.lng) AS dist
FROM
cities b
ORDER BY
dist
LIMIT 10;

-- method 2
SELECT
b.*,
HAVERSINE(a.lat, a.lng, b.lat, b.lng) AS dist
FROM
cities AS a
JOIN cities AS b on a.cityID = p_cityID
ORDER BY
dist
LIMIT 10;

END |

delimiter ;

关于SELECT 语句中的 MySQL 存储过程变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10649748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com