← К оглавлению занятия

🐛 Ошибки

📁 Блок: SQL / MySQL / Хранимые процедуры ⏱️ Время изучения: ~90 мин 🎯 Сложность: Продвинутая

⚡ Кратко: 🐛 ошибки

Хранимая процедура — сохранённый в базе блок SQL-кода для многократного выполнения.

В MySQL процедура создаётся через CREATE PROCEDURE, тело пишется в BEGIN ... END, а вызывается через CALL.

Параметры могут быть входными IN, выходными OUT и двунаправленными INOUT.

Минимальный пример: CALL add_employee('John Doe', 30); добавляет сотрудника через заранее созданную процедуру.

Процедуры подходят для повторяемых серверных процессов, сложной бизнес-логики и ограничения прямого доступа к таблицам.

Топ-3 ошибки: забыть DELIMITER, вызвать процедуру как функцию через SELECT, перепутать имя столбца id/employee_id в практической задаче.

🐛 Типичные ошибки

1

Процедуру вызывают через SELECT

Симптом: MySQL не воспринимает процедуру как выражение.

Исправление: Используйте CALL procedure_name(...).

2

Не объявлен OUT-параметр

Симптом: Процедура считает результат, но вызывающий код его не получает.

Исправление: Добавьте OUT is_higher INTEGER и запишите значение через SET.

3

Имя столбца не совпадает с таблицей

Симптом: Запрос зарплаты возвращает NULL.

Исправление: Сверьте WHERE id = employee_in или WHERE employee_id = employee_in с реальной схемой.

4

Забыли DELIMITER

Симптом: Процедура обрывается на первой точке с запятой внутри тела.

Исправление: Перед созданием процедуры меняйте delimiter и возвращайте его в конце.