SUBTYPE: подтипы данных PL/SQL, определяемые программистом

PL/SQL поддерживает оператор SUBTYPE, который позволяет программисту определять собственные подтипы (иногда называемые абстрактными типами данных). В PL/SQL подтип представляет собой новый тип данных с тем же набором правил, но сокращенным подмножеством значений исходного типа. Подтипы делятся на две категории.

  • Подтип с ограничениями. Набор значений подтипа является подмножеством набора значений исходного типа данных. Например, тип POSITIVE является подтипом BINARY_ INTEGER с ограничениями. В пакете STANDARD, где определяются типы данных и функции стандартного языка PL/SQL, подтип POSITIVE определяется следующим образом:
       SUBTYPE POSITIVE IS BINARY_INTEGER RANGE 1 .. 2147483647; 

В переменной, объявленной с типом POSITIVE, могут храниться только целочисленные значения больше 0.

  • Подтип без ограничений. Этот подтип имеет такой же набор значений, что и исходный тип данных. Например, тип FLOAT является подтипом NUMBER без ограничений. Он определен в пакете STANDARD следующим образом:
       SUBTYPE FLOAT IS NUMBER; 

Подтипы объявляются в разделе объявлений анонимного блока PL/SQL, процедуры, функции или пакета. Ранее уже приводился пример объявления подтипа из пакета STANDARD. Общий формат объявления подтипа: 

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

Здесь имя_подтипа — имя нового определяемого подтипа, а базовый_тип — имя типа данных, на котором основывается определяемый подтип.

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

PACKAGE utility
AS
SUBTYPE big_string IS VARCHAR2(32767);
SUBTYPE big_db_string IS VARCHAR2(4000);
END utility;

Имейте в виду, что на переменные, привязанные к подтипу, не распространяется ограничение NOT NULL, а также игнорируются начальные значения, включенные в исходное объявление переменной или спецификацию столбца.

Вас заинтересует / Intresting for you:

Встроенные методы коллекций PL...
Встроенные методы коллекций PL... 14738 просмотров sepia Tue, 29 Oct 2019, 09:54:01
Управление приложениями PL/SQL...
Управление приложениями PL/SQL... 4634 просмотров Stas Belkov Thu, 16 Jul 2020, 06:20:48
Символьные функции и аргументы...
Символьные функции и аргументы... 18546 просмотров Анатолий Wed, 23 May 2018, 18:54:01
Тип данных RAW в PL/SQL
Тип данных RAW в PL/SQL 12239 просмотров Doctor Thu, 12 Jul 2018, 08:41:33
Войдите чтобы комментировать

Oracle_Admin аватар
Oracle_Admin ответил в теме #9043 5 года 10 мес. назад
Кратко (читай - талантливо) и понятно все описали. Абстрактные типы - мощный механизм для создания продуктивного кода на PL/SQL, и программист должен владеть им в совершенстве!