Передали число в OUT
Симптом: вызов не возвращает значение или падает с ошибкой синтаксиса.
Исправление: создайте переменную: SET @salary = 0;, затем вызовите CALL get_employee_salary(1, @salary);.
Параметры процедуры позволяют передавать данные в процедуру и получать результат обратно.
IN используется для входных значений: процедура читает аргумент и строит по нему запрос.
OUT используется для результата: процедура записывает значение в переменную вызывающего кода через SELECT ... INTO или SET.
INOUT совмещает оба направления: начальное значение приходит в процедуру, изменённое значение возвращается наружу.
Для OUT и INOUT в MySQL обычно передают пользовательские переменные вида @salary.
Минимальный пример: CALL get_employee_salary(1, @salary); SELECT @salary;.
Топ-3 ошибки: вызвать процедуру без CALL, передать литерал вместо переменной в OUT, забыть присвоить значение выходному параметру внутри процедуры.
OUTСимптом: вызов не возвращает значение или падает с ошибкой синтаксиса.
Исправление: создайте переменную: SET @salary = 0;, затем вызовите CALL get_employee_salary(1, @salary);.
SELECT ... INTOСимптом: процедура показывает строку в результате, но выходной параметр остаётся пустым.
Исправление: присвойте результат параметру: SELECT salary INTO emp_salary ....
IN и INOUTСимптом: значение меняется внутри процедуры, но после вызова снаружи остаётся прежним.
Исправление: если изменение должно вернуться наружу, объявите параметр как INOUT.
Симптом: следующие SQL-команды ведут себя неожиданно.
Исправление: после создания процедуры выполните DELIMITER ;.