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

💻 Примеры

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

Подготовка таблицы employees

CREATE TABLE employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    age INT,
    salary INT,
    department_id INT
);

INSERT INTO employees (name, age, salary, department_id)
VALUES
    ('Alice', 28, 5200, 1),
    ('Bob', 35, 4700, 1),
    ('Cara', 31, 6100, 2),
    ('Dan', 24, 3900, 2),
    ('Eva', 42, 7000, 3);

Процедура добавления сотрудника

DELIMITER $$

CREATE PROCEDURE add_employee(IN emp_name VARCHAR(100), IN emp_age INT)
BEGIN
    INSERT INTO employees (name, age)
    VALUES (emp_name, emp_age);
END $$

DELIMITER ;

CALL add_employee('John Doe', 30);

emp_name и emp_age — входные параметры. Процедура берёт их значения и вставляет новую строку в employees.