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

🔖 Справочник

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

⚡ Кратко: 🔖 справочник

Параметры процедуры позволяют передавать данные в процедуру и получать результат обратно.

IN используется для входных значений: процедура читает аргумент и строит по нему запрос.

OUT используется для результата: процедура записывает значение в переменную вызывающего кода через SELECT ... INTO или SET.

INOUT совмещает оба направления: начальное значение приходит в процедуру, изменённое значение возвращается наружу.

Для OUT и INOUT в MySQL обычно передают пользовательские переменные вида @salary.

Минимальный пример: CALL get_employee_salary(1, @salary); SELECT @salary;.

Топ-3 ошибки: вызвать процедуру без CALL, передать литерал вместо переменной в OUT, забыть присвоить значение выходному параметру внутри процедуры.

Справочник параметров процедур

IN parameter_name TYPE

Входной параметр. Используйте, когда процедура должна принять значение и построить по нему запрос.

CREATE PROCEDURE get_employee_name(IN emp_id INT)

OUT parameter_name TYPE

Выходной параметр. Используйте, когда процедура должна вернуть одно рассчитанное значение.

CREATE PROCEDURE get_employee_salary(IN emp_id INT, OUT emp_salary INT)

INOUT parameter_name TYPE

Двунаправленный параметр. Используйте, когда начальное значение надо изменить и вернуть.

CREATE PROCEDURE increase_bonus(INOUT bonus_amount DECIMAL(10, 2))

SELECT ... INTO

Кладёт результат запроса в переменную или параметр процедуры.

SELECT monthly_salary * 12 INTO annual_salary FROM employees WHERE id = emp_id;

SET @variable = value

Создаёт или обновляет пользовательскую переменную MySQL для вызова OUT/INOUT.

SET @salary = 0;

CALL procedure_name(...)

Вызывает процедуру. Для OUT и INOUT передавайте переменную, а не число или строковый литерал.

CALL get_employee_salary(1, @salary);

Полный справочник курса: SQL Reference. MongoDB в этом занятии не используется.