2017-01-03 3 views
0

При разработке хранимой процедуры в MySQL как создать локальную переменную, содержащую результирующий набор строк из пользовательского представления?MySQL Stored Proc - Назначить переменную для вывода строк из представления

SET temptable = 'view'; #non scalar value (rows) 

#Perform multiple queries on view now 

SET @a = (SELECT (...) FROM temptable WHERE ....); 

SET @b = (SELECT (...) FROM temptable WHERE ....); 

SET @c = (SELECT (...) FROM temptable WHERE ....); 

Я не хочу, чтобы вызвать представление каждый раз, когда я делаю отборное заявление, так как я чувствую его дорогостоящим

ответ

2

Вам не нужно все это. Вы можете включать в себя все различные условия, как OR условия (OR) использовать UNION ALL запрос как

create temporary table tbltemp as 
SELECT (...) FROM temptable WHERE cond1 or cond2 OR ... OR condn 

За свой комментарий, зависит; если вы пытаетесь получить скалярное значение, тогда да еще нет, поскольку более чем одна запись не может быть сохранена в скалярной переменной. Вам нужно будет использовать temp table или соединительную таблицу.

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

+0

Я знаю, что это возможно. Но есть ли способ хранения табличных представлений в качестве переменных? – BDillan

+0

@BDillan, см. Редактирование в ответ, если это помогает. – Rahul

+0

Спасибо, я предполагаю, что мне придется отказаться от таблицы в конце хранимой процедуры? – BDillan

Смежные вопросы