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

📖 Теория

📁 Блок: 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 в практической задаче.

Что такое хранимая процедура

Хранимые процедуры — это блоки SQL-кода, которые сохраняются в базе данных для многократного использования. Они выполняются на стороне сервера и позволяют автоматизировать повторяющиеся операции, сложные вычисления и серверные процессы.

В источнике подчёркнуты четыре особенности: производительность, сложная бизнес-логика, безопасность и повторное использование.

Синтаксис MySQL

DELIMITER $$

CREATE PROCEDURE procedure_name([parameters])
BEGIN
    -- тело процедуры
END $$

DELIMITER ;
  • DELIMITER $$ нужен, потому что внутри процедуры используются обычные точки с запятой.
  • CREATE PROCEDURE создаёт процедуру в базе данных.
  • IN, OUT, INOUT задают направление параметров.
  • BEGIN ... END содержит тело процедуры.

Функция или процедура

Функция возвращает одно значение и вызывается как выражение. Процедура вызывается командой CALL и может выполнять последовательность действий: вставку, расчёты, присваивание выходных параметров.

Проверить по документации

Синтаксис процедур отличается между MySQL, PostgreSQL и SQL Server. В MongoDB нет SQL-хранимых процедур; серверный JavaScript в MongoDB имеет ограничения и отдельные предупреждения в документации.