FUNCTION в Oracle SQL и PL/SQL— как создавать и вызывать функции

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

Функции в Oracle SQL позволяют инкапсулировать повторяющуюся логику в виде модуля, который можно вызывать из SQL и PL/SQL. С помощью ключевого слова FUNCTION вы можете создать собственную функцию, возвращающую одно значение, и использовать её в запросах, выражениях и бизнес-логике.

Функции:

  • возвращают значение (в отличие от процедур)

  • могут принимать параметры

  • используют RETURN

  • могут использоваться в SELECT, WHERE, ORDER BY


🔤 Написание

plsql
CREATE OR REPLACE FUNCTION имя_функции (параметры)
RETURN тип_значения
IS
BEGIN
-- тело
RETURN значение;
END;

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

  • Капсулирование бизнес-логики

  • Упрощение повторяющихся вычислений

  • Обработка данных в SELECT и WHERE

  • Проверки и валидация

  • Преобразование значений в пакетной обработке


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

1️⃣ Простая функция без параметров

plsql
CREATE OR REPLACE FUNCTION get_app_version
RETURN VARCHAR2 IS
BEGIN
RETURN '1.0.0';
END;

2️⃣ Функция с входным параметром

plsql
CREATE OR REPLACE FUNCTION square(x NUMBER)
RETURN NUMBER IS
BEGIN
RETURN x * x;
END;

3️⃣ Вызов функции в SELECT

sql
SELECT employee_id, square(salary) AS salary_squared
FROM employees;

4️⃣ Функция с условием внутри

plsql
CREATE OR REPLACE FUNCTION status_label(p_status VARCHAR2)
RETURN VARCHAR2 IS
BEGIN
IF p_status = 'A' THEN
RETURN 'Active';
ELSE
RETURN 'Inactive';
END IF;
END;

5️⃣ Использование в WHERE

sql
SELECT * FROM orders
WHERE status_label(status) = 'Active';

6️⃣ Функция с датами

plsql
CREATE OR REPLACE FUNCTION days_between(p_date1 DATE, p_date2 DATE)
RETURN NUMBER IS
BEGIN
RETURN ABS(p_date1 - p_date2);
END;

7️⃣ Рекурсивная функция

plsql
CREATE OR REPLACE FUNCTION factorial(n NUMBER)
RETURN NUMBER IS
BEGIN
IF n = 0 THEN RETURN 1;
ELSE RETURN n * factorial(n - 1);
END IF;
END;

8️⃣ Функция с DEFAULT параметром

plsql
CREATE OR REPLACE FUNCTION greet(name VARCHAR2 DEFAULT 'Гость')
RETURN VARCHAR2 IS
BEGIN
RETURN 'Привет, ' || name || '!';
END;

9️⃣ Функция в ORDER BY

sql
SELECT employee_id, salary
FROM employees
ORDER BY square(salary) DESC;

🔟 Удаление функции

sql
DROP FUNCTION greet;

🧩 Заключение

Ключевое слово FUNCTION в Oracle SQL — это основа модульного подхода в PL/SQL. Оно помогает создавать повторно используемую, читаемую и надёжную логику, которую можно внедрять в любые SQL-выражения.

💡 Запомни:

  • Функции возвращают значение через RETURN

  • Используются в SQL и PL/SQL

  • Поддерживают параметры, условия, арифметику

  • Делают код гибким и масштабируемым


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

FROM в Oracle SQL — 30 примеров с таблицами


 

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