SUBTYPE в Oracle SQL — как создавать типы-подмножества в PL/SQL

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

SUBTYPE в Oracle PL/SQL позволяет создавать пользовательские подтипы на основе существующих типов данных. Это мощный инструмент, который помогает:

  • Повысить читаемость и самодокументируемость кода

  • Ограничить допустимые значения

  • Улучшить контроль типов в больших проектах

Подтипы ведут себя как их базовые типы, но дают больше контроля и логики.


🔤 Написание

plsql
SUBTYPE имя_подтипа IS базовый_тип;

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

  • Упрощение кода и повторного использования типов

  • Определение ограничений по контексту

  • Создание бизнес-логики через типы

  • Расширение встроенных типов

  • Повышение гибкости при работе с переменными


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

1️⃣ Создание подтипа на основе встроенного типа

plsql
SUBTYPE t_employee_id IS NUMBER(6);

2️⃣ Объявление переменной с подтипом

plsql
DECLARE
v_id t_employee_id;
BEGIN
v_id := 100;
END;

3️⃣ Создание подтипа строки ограниченной длины

plsql
SUBTYPE short_name IS VARCHAR2(20);

4️⃣ Подтип на основе типа таблицы

plsql
TYPE t_name_table IS TABLE OF VARCHAR2(50);
SUBTYPE short_table IS t_name_table;

5️⃣ Использование подтипа в параметрах процедур

plsql

SUBTYPE dept_id IS NUMBER(4);

PROCEDURE get_dept_info(p_id dept_id) IS
BEGIN

END;


6️⃣ Подтип с ограничением по смыслу

plsql
SUBTYPE percent_value IS NUMBER(3,2);
-- предполагается, что значения от 0.00 до 1.00

7️⃣ Использование в курсорах

plsql

SUBTYPE t_emp_name IS employees.first_name%TYPE;

DECLARE
v_name t_emp_name;
BEGIN
SELECT first_name INTO v_name FROM employees WHERE employee_id = 100;
END;


8️⃣ Комбинирование с пользовательскими типами

plsql
CREATE TYPE t_point AS OBJECT (
x NUMBER,
y NUMBER
);
SUBTYPE t_point_sub IS t_point;

9️⃣ Создание синонимов для сложных типов

plsql
TYPE t_complex IS RECORD (id NUMBER, name VARCHAR2(50));
SUBTYPE t_simpler IS t_complex;

🔟 Повышение читаемости и структуры

plsql
SUBTYPE emp_email IS VARCHAR2(100);
-- Позже:
v_email emp_email := 'user@example.com';

🧩 SUBTYPE в Oracle SQL. Заключение

SUBTYPE — это не просто удобство, а способ описывать бизнес-смысл прямо в типах данных. Используя подтипы, вы делаете код более читабельным, гибким и адаптируемым к изменениям в логике системы.

💡 Запомни:

  • SUBTYPE не создаёт новый тип в БД, а расширяет тип в коде

  • Повышает читаемость и повторяемость

  • Идеален для архитектурного проектирования

  • Используется в процедурах, курсорах, переменных


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

START WITH в Oracle SQL — как строить иерархии с нужной точки


 

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