RETURN в Oracle SQL — как возвращать значения из функций

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

Оператор RETURN — это универсальный способ:

  • Завершить выполнение функции или процедуры

  • Вернуть результат из функции

  • Выйти из блока кода раньше при определённом условии

Он делает PL/SQL-код более контролируемым, безопасным и предсказуемым.


🔤 Написание

sql
RETURN выражение; -- в функции
RETURN; -- в процедурах

🧮 Пример:

sql
RETURN salary * 0.1;

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

  • Внутри функций (FUNCTION) для возврата результата

  • Внутри процедур (PROCEDURE) для выхода из кода

  • В условиях (IF, CASE) для раннего завершения

  • В сложных блоках с вложенными вызовами


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

1️⃣ RETURN из функции

sql
CREATE OR REPLACE FUNCTION get_bonus(p_salary NUMBER) RETURN NUMBER IS
BEGIN
RETURN p_salary * 0.1;
END;

Возвращаем бонус как 10% от зарплаты.


2️⃣ Ретёрн с условием внутри функции

sql
IF p_job = 'MANAGER' THEN
RETURN 1000;
ELSE
RETURN 500;
END IF;

Разные значения в зависимости от условий.


3️⃣ RETURN в процедуре без значения

sql
PROCEDURE log_activity(p_action VARCHAR2) IS
BEGIN
INSERT INTO logs(action) VALUES (p_action);
IF p_action IS NULL THEN
RETURN;
END IF;
-- другой код
END;

Преждевременное завершение без возвращаемого значения.


4️⃣ Ретёрн в цикле — выход по условию

sql
FOR rec IN (SELECT * FROM employees) LOOP
IF rec.salary > 10000 THEN
RETURN; -- завершаем всю процедуру
END IF;
END LOOP;

Прекращаем выполнение при достижении условия.


5️⃣ RETURN после обработки исключения

sql
BEGIN
-- что-то делаем
EXCEPTION
WHEN OTHERS THEN
RETURN;
END;

Безопасное завершение процедуры после ошибки.


6️⃣ RETURN из вложенного блока

sql
BEGIN
BEGIN
-- вложенный код
RETURN;
END;
END;

Работает как выход из всей процедуры/функции.


7️⃣ RETURN NULL из функции

sql
IF p_input IS NULL THEN
RETURN NULL;
END IF;

Явно возвращаем NULL при пустом параметре.


8️⃣ Ретёрн в рекурсивной функции

sql
FUNCTION factorial(n NUMBER) RETURN NUMBER IS
BEGIN
IF n <= 1 THEN
RETURN 1;
ELSE
RETURN n * factorial(n - 1);
END IF;
END;

Пример классической рекурсии.


9️⃣ RETURN в CASE-выражении

sql
RETURN CASE p_type
WHEN 'A' THEN 10
WHEN 'B' THEN 20
ELSE 0
END;

Лаконичное выражение возврата.


🔟 Ретёрн в анонимном блоке — запрещено

sql
BEGIN
RETURN; -- ❌ ошибка: RETURN вне функции/процедуры
END;

Можно использовать только внутри функций и процедур.


🧩 Заключение

Оператор RETURN — это фундаментальный инструмент управления потоком выполнения в PL/SQL. Он позволяет завершить работу функции или процедуры в нужный момент и вернуть результат.

💡 Запомни:

  • В функциях RETURN обязан возвращать значение

  • В процедурах RETURN используется для досрочного выхода

  • Может использоваться в условиях, циклах и вложенных блоках

  • Обязателен в каждой функции как минимум один раз


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

RAISE в Oracle SQL — как управлять логикой ошибок в PL/SQL


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