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

💻 Примеры

📁 Блок: SQL / MySQL / Повторение ⏱️ Время изучения: ~60 мин 🎯 Сложность: Повторение

⚡ Кратко: 💻 примеры

Summary session 12 повторяет хранимые процедуры и параметры IN, OUT, INOUT.

Процедура создаётся через CREATE PROCEDURE, тело помещается в BEGIN ... END, вызывается через CALL.

IN подходит для входных значений, например id сотрудника.

OUT возвращает рассчитанное значение через переменную вызывающего кода.

INOUT получает начальное значение, изменяет его и возвращает обратно.

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

Топ-3 ошибки: забыть DELIMITER, не использовать SELECT ... INTO, перепутать OUT и INOUT.

Единый пример для повторения

DROP TABLE IF EXISTS employees;
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT,
    salary INT,
    department_id INT
);

INSERT INTO employees (id, name, age, salary, department_id) VALUES
    (1, 'Anna', 28, 50000, 10),
    (2, 'Ben', 34, 62000, 20),
    (3, 'Cara', 41, 71000, 10);

DELIMITER $$

CREATE PROCEDURE get_employee_age(IN emp_id INT)
BEGIN
    SELECT age FROM employees WHERE id = emp_id;
END $$

CREATE PROCEDURE get_employee_salary(IN emp_id INT, OUT emp_salary INT)
BEGIN
    SELECT salary INTO emp_salary FROM employees WHERE id = emp_id;
END $$

CREATE PROCEDURE increase_salary(INOUT emp_salary INT)
BEGIN
    SET emp_salary = emp_salary * 1.1;
END $$

DELIMITER ;

Этот блок повторяет всё, что нужно для задач summary: входной id, выходная переменная и изменение переданного значения.