Ответ 1
Существует несколько способов сделать это.
Вы можете использовать подзапрос:
SET some_var = (SELECT COUNT(*) FROM mytable);
(например, ваш оригинал, просто добавьте круглые скобки вокруг запроса)
или используйте синтаксис SELECT INTO для назначения нескольких значений:
SELECT COUNT(*), MAX(col)
INTO some_var, some_other_var
FROM tab;
Синтаксис подзапроса немного быстрее (я не знаю почему), но работает только для назначения одного значения. Выбор в синтаксисе позволяет сразу установить несколько значений, поэтому, если вам нужно захватить несколько значений из запроса, вы должны сделать это, а не выполнять запрос снова и снова для каждой переменной.
Наконец, если ваш запрос возвращает не одну строку, а набор результатов, вы можете использовать cursor.