2015-12-27 9 views
1

У меня есть процедура, которая вызывается с помощьюMySQL с использованием рутинного вывода, чтобы присоединиться на столе

SET @p0='55'; SET @p1='-6'; SET @p2='100'; CALL `distanceSearch`(@p0, @p1, @p2); 

В основном я прохожу по широте, долготе и расстоянию для поиска пользователей, например 100 миль. Процедура создает временную таблицу и вставляет в нее результаты. Когда я его выполню, возвращается результат.

Когда я пытаюсь выполнить его, как это я побегу в синтаксической ошибки

SET @p0='55'; SET @p1='-6'; SET @p2='100'; 
select foo.* from (CALL `distanceSearch`(@p0, @p1, @p2)) as foo 

Что я делаю не так? Как использовать результаты этого для присоединения к другой таблице?

ответ

1

НЕТ, вы не можете выполнить выбор из процедуры, как этот путь, но, как вы сказали, Процедура создает временную таблицу и вставляет в нее результаты

в том случае, если вы уже знаете имя временной таблицы затем сделать SELECT из этой таблицы

select * from temporary_table_name 

Else, конвертировать рутина в таблицу значных функции, а не хранимой процедуры, а затем вы можете сказать

select * from fn_runRoutine_Job() 
+1

'select * from fn_runRoutine_Job()' ... хранимые функции возвращают только скаляры в MySQL. Нет «функций, связанных с таблицей». –

+1

@ Michael-sqlbot, Да, точно, может быть, мисс с моей стороны. Только путь - это временная таблица. – Rahul

+0

Спасибо, я понял, что нужна только одна колонка, например, расчетное расстояние, поэтому здесь достаточно функции. – user2202098