Процедуру вызывают через SELECT
Симптом: MySQL не воспринимает процедуру как выражение.
Исправление: Используйте CALL procedure_name(...).
Хранимая процедура — сохранённый в базе блок SQL-кода для многократного выполнения.
В MySQL процедура создаётся через CREATE PROCEDURE, тело пишется в BEGIN ... END, а вызывается через CALL.
Параметры могут быть входными IN, выходными OUT и двунаправленными INOUT.
Минимальный пример: CALL add_employee('John Doe', 30); добавляет сотрудника через заранее созданную процедуру.
Процедуры подходят для повторяемых серверных процессов, сложной бизнес-логики и ограничения прямого доступа к таблицам.
Топ-3 ошибки: забыть DELIMITER, вызвать процедуру как функцию через SELECT, перепутать имя столбца id/employee_id в практической задаче.
Симптом: MySQL не воспринимает процедуру как выражение.
Исправление: Используйте CALL procedure_name(...).
Симптом: Процедура считает результат, но вызывающий код его не получает.
Исправление: Добавьте OUT is_higher INTEGER и запишите значение через SET.
Симптом: Запрос зарплаты возвращает NULL.
Исправление: Сверьте WHERE id = employee_in или WHERE employee_id = employee_in с реальной схемой.
Симптом: Процедура обрывается на первой точке с запятой внутри тела.
Исправление: Перед созданием процедуры меняйте delimiter и возвращайте его в конце.