OUT в Oracle SQL — как передавать значения из процедур

🟢 OUT в Oracle SQL. Введение

В Oracle SQL, а точнее в PL/SQL, директива OUT используется для объявления параметров, которые возвращают значения из процедуры вызывающему коду. Это позволяет функциям и процедурам не только принимать данные, но и отдавать результаты обратно.

OUT — это ключ к двустороннему взаимодействию в PL/SQL-процедурах.


🔤 Написание

plsql
PROCEDURE имя_процедуры(параметр OUT тип)

Пример вызова с переменной:

plsql
DECLARE
v_result NUMBER;
BEGIN
имя_процедуры(v_result);
END;

🔄 Где используется OUT

  • Возврат значений из процедуры

  • Формирование отчётов

  • Подсчёт и передача данных

  • Управление логикой в пакетах

  • Запись результатов выполнения


🧪 10 Примеров использования OUT

1️⃣ Простая процедура с OUT-параметром

plsql
CREATE OR REPLACE PROCEDURE get_salary(
p_employee_id IN NUMBER,
p_salary OUT NUMBER
) IS
BEGIN
SELECT salary INTO p_salary
FROM employees
WHERE employee_id = p_employee_id;
END;

2️⃣ Вызов процедуры и получение значения

plsql
DECLARE
v_sal NUMBER;
BEGIN
get_salary(100, v_sal);
DBMS_OUTPUT.PUT_LINE('Зарплата: ' || v_sal);
END;

3️⃣ Несколько OUT-параметров

plsql
PROCEDURE get_info(
p_id IN NUMBER,
p_name OUT VARCHAR2,
p_hire_date OUT DATE
)

4️⃣ OUT + IN параметры вместе

plsql
PROCEDURE calc_bonus(
p_salary IN NUMBER,
p_bonus OUT NUMBER
)

5️⃣ OUT-параметр с типом BOOLEAN (в PL/SQL)

plsql
PROCEDURE check_exists(
p_id IN NUMBER,
p_found OUT BOOLEAN
)

6️⃣ OUT в пакете

plsql
PACKAGE emp_tools IS
PROCEDURE fetch_name(p_id IN NUMBER, p_name OUT VARCHAR2);
END;

7️⃣ OUT с пользовательским типом

plsql

TYPE emp_rec IS RECORD (name VARCHAR2(100), dept VARCHAR2(50));

PROCEDURE get_employee(p_id IN NUMBER, p_data OUT emp_rec)


8️⃣ Обработка OUT с NULL

plsql
IF v_result IS NULL THEN
DBMS_OUTPUT.PUT_LINE('Нет данных');
END IF;

9️⃣ OUT и EXCEPTION внутри процедуры

plsql
BEGIN
get_salary(9999, v_sal);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Сотрудник не найден');
END;

🔟 OUT в сочетании с RETURNING INTO

plsql
PROCEDURE insert_order(p_customer_id IN NUMBER, p_order_id OUT NUMBER) IS
BEGIN
INSERT INTO orders (order_id, customer_id)
VALUES (orders_seq.NEXTVAL, p_customer_id)
RETURNING order_id INTO p_order_id;
END;

🧩 Заключение

Ключевое слово OUT позволяет делать процедуры гибкими и информативными, отдавая обратно любые данные. Это основа эффективного PL/SQL-программирования, особенно когда нужны не только действия, но и результат.

💡 Запомни:

  • OUT передаёт значение из процедуры наружу

  • Используется только в процедурах и функциях PL/SQL

  • Может быть числом, текстом, датой, булевым или даже записью

  • OUT удобно сочетать с RETURNING INTO и проверками


🔜 Следующая статья:

NVL в Oracle SQL — как заменять NULL на значение по умолчанию


 

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии