Подтвердить что ты не робот

Задайте результат переменной, из запроса

Когда я создаю сохраненную процедуру, я могу создать некоторую переменную yes? например:

CREATE PROCEDURE `some_proc` ()  
BEGIN  

   DECLARE some_var INT; 
   SET some_var = 3;
....

ВОПРОС: но как задать результат переменной из запроса, вот как это сделать:

DECLARE some_var INT;
SET some_var = SELECT COUNT(*) FROM mytable ;

?

4b9b3361

Ответ 1

Существует несколько способов сделать это.

Вы можете использовать подзапрос:

SET some_var = (SELECT COUNT(*) FROM mytable);

(например, ваш оригинал, просто добавьте круглые скобки вокруг запроса)

или используйте синтаксис SELECT INTO для назначения нескольких значений:

SELECT COUNT(*), MAX(col)
INTO   some_var, some_other_var
FROM   tab;

Синтаксис подзапроса немного быстрее (я не знаю почему), но работает только для назначения одного значения. Выбор в синтаксисе позволяет сразу установить несколько значений, поэтому, если вам нужно захватить несколько значений из запроса, вы должны сделать это, а не выполнять запрос снова и снова для каждой переменной.

Наконец, если ваш запрос возвращает не одну строку, а набор результатов, вы можете использовать cursor.

Ответ 2

Следующий оператор select должен позволить вам сохранить результат из count (*).

SELECT COUNT(*) FROM mytable INTO some_var;