Хранимая процедура Mysql Выберите столбец в параметре OUT

У меня есть хранимая процедура, похожая на эту, и когда я пытаюсь ее сохранить, я получаю эту ошибку:

Необъявленная переменная: my_column

CREATE PROCEDURE p (OUT column_param VARCHAR(25))
BEGIN
    SELECT my_column INTO coumn_param limit 1;
END;

Почему я не могу выбрать столбец для возврата?

Вот мой фактический запрос в рамках процедуры:

select latitude into lat, longitude into lon
from cities cc
inner join countries c on cc.country_id = c.country_id
inner join regions r on cc.region_id = r.region_id and c.country_id = r.country_id
left join locations l on cc.city_id = l.city_id
where 
city = coalesce(cty, city) and
country = coalesce(ctry, country) and
region = coalesce(reg, region)
limit 1;

person Get Off My Lawn    schedule 26.08.2013    source источник


Ответы (1)


Ваш синтаксис предложения INTO неверен

Предполагая, что сам ваш запрос правильный и функциональный, и у вас есть объявленные переменные lat и lon, измените эту часть

select latitude into lat, longitude into lon

to

SELECT latitude, longitude INTO  lat, lon

Вот демонстрация SQLFiddle.

person peterm    schedule 26.08.2013
comment
Я не могу сделать это с подготовленными заявлениями, не так ли? - person Get Off My Lawn; 26.08.2013
comment
@RyanNaddy Если вы имеете в виду PREPARE ... FROM ... и EXECUTE ... USING, то да, вы можете, но вам нужно использовать переменные пользователя/сеанса (e.g. @lat) вместо локальных переменных, которые идут без @. - person peterm; 26.08.2013
comment
Хорошо, я сделал это (как подготовленный stmt): SELECT latitude, longitude INTO @lat, @lon .... затем это (как обычно): select @lat, @lon into lat, lon; - person Get Off My Lawn; 26.08.2013