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

📝 Задания

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

⚡ Кратко: 📝 задания

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

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

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

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

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

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

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

Практическая работа

1

IN: товар по id

Создайте таблицу products с колонками id, product_name, price, добавьте несколько строк и напишите процедуру get_product_name.

2

OUT: годовая зарплата

Создайте таблицу employees с monthly_salary. Напишите процедуру get_annual_salary, которая возвращает monthly_salary * 12 через OUT.

3

INOUT: увеличение бонуса

Напишите процедуру increase_bonus, которая принимает бонус, увеличивает его на 15% и возвращает новое значение.

Проверка понимания

Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.

Вопрос 1

Какой параметр передаёт значение в процедуру?

Вопрос 2

Что нужно передать в OUT-параметр при вызове MySQL-процедуры?

Вопрос 3

Для чего используется SELECT ... INTO внутри процедуры?

Вопрос 4

Когда подходит INOUT?

Вопрос 5

Как вызвать процедуру get_employee_salary?

Вопрос 6

Что произойдёт, если внутри процедуры не присвоить значение OUT-параметру?

Вопрос 7

Какой тип параметра нужен для увеличения бонуса и возврата нового значения?