✅ Решения
⚡ Кратко: ✅ решения
Хранимая процедура — сохранённый в базе блок SQL-кода для многократного выполнения.
В MySQL процедура создаётся через CREATE PROCEDURE, тело пишется в BEGIN ... END, а вызывается через CALL.
Параметры могут быть входными IN, выходными OUT и двунаправленными INOUT.
Минимальный пример: CALL add_employee('John Doe', 30); добавляет сотрудника через заранее созданную процедуру.
Процедуры подходят для повторяемых серверных процессов, сложной бизнес-логики и ограничения прямого доступа к таблицам.
Топ-3 ошибки: забыть DELIMITER, вызвать процедуру как функцию через SELECT, перепутать имя столбца id/employee_id в практической задаче.
Решение практической работы
DELIMITER //
CREATE PROCEDURE higher_than_avg(
IN employee_in INT,
OUT is_higher INTEGER
)
BEGIN
DECLARE avg_salary DECIMAL(8,2);
DECLARE employee_salary DECIMAL(8,2);
SET avg_salary = (
SELECT AVG(salary)
FROM employees
);
SET employee_salary = (
SELECT salary
FROM employees
WHERE id = employee_in
);
IF employee_salary > avg_salary THEN
SET is_higher = 1;
ELSE
SET is_higher = 0;
END IF;
END //
DELIMITER ;
CALL higher_than_avg(1, @is_higher);
SELECT @is_higher;
Решение использует две локальные переменные: среднюю зарплату по таблице и зарплату конкретного сотрудника. Затем IF записывает результат в выходной параметр.
В тексте источника практики параметр назван employee_id, а подготовительная таблица использует столбец id. В решении выше условие написано как WHERE id = employee_in. Если в вашей таблице столбец называется employee_id, замените имя в условии.