Я написал длинный запрос MySQK, который хочу использовать в другом запросе. Я борюсь с частью подключения переменных из первой процедуры в течение второй.
CREATE PROCEDURE proc1(lat double,lon double) BEGIN
SELECT * FROM Locations where latitude=lat AND longitude=lon;
END;
, которая возвращает идентификатор и имя
CREATE PROCEDURE call_procedure(lat double,lon double)
BEGIN
SELECT * FROM Weather WHERE procId=call proc1(lat,lon);
END;
Какой шаг мне не хватает, чтобы получить идентификатор значение на месте вызова proc1 (широта, долгота). Я пытался объявить переменную, но мне это не удалось.
ОБНОВЛЕНИЕ: Я пытался редактировать свой код в соответствии с @ Akina
CREATE PROCEDURE nearest_weather_station16(IN lat double,IN lon double, OUT station INT, OUT station_name VARCHAR(30), OUT distance DOUBLE)
BEGIN
Select WeatherStations.weatherStationIndex INTO station, WeatherStations.stationName INTO station_name, (6371 * acos(cos(radians(lat)) *
cos(radians(Locations.latitude)) *
cos(radians(Locations.longitude) -
radians(lon)) +
sin(radians(lat)) *
sin(radians(Locations.latitude)))) as dis INTO distance
FROM
(
SELECT weatherStationIndex,weatherIndex, MAX(TIME) AS LASTSEEN
FROM Weather where time>DATE_SUB(UTC_TIMESTAMP(),INTERVAL 1 hour)
GROUP BY weatherStationIndex
) latest
JOIN WeatherStations ON latest.weatherStationIndex=WeatherStations.weatherStationIndex JOIN Locations on WeatherStations.locationIndex=Locations.locationIndex
ORDER BY dis ASC LIMIT 1;
END;
Код работал до добавления слова IN и OUT, включая переменные и INTO, включая переменные. Теперь выдает ошибку необъявленной переменной: WeatherStations