IN parameter_name TYPE
Входной параметр. Используйте, когда процедура должна принять значение и построить по нему запрос.
CREATE PROCEDURE get_employee_name(IN emp_id INT)
Параметры процедуры позволяют передавать данные в процедуру и получать результат обратно.
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 в этом занятии не используется.