Определение структурных типов

Общий синтаксис оператора определения UDT (индивидуального или структурного) определяется следующими правилами:

 

UDT_definition ::= CREATE TYPE UDT_name
[ subtype_clause ]
[ AS representation ]
[ instantiable_clause ]
finality
[ reference_type_specification ]
[ ref_cast_option ]
[ cast_option ]
[ method_specification_commalist ]

 

Имя определяемого пользователем типа данных имеет, в общем случае, традиционную для SQL трехзвенную структуру – имя_каталога.имя_схемы.имя_типа. Раздел подтипизации задается в следующем синтаксисе:

 

subtype_clause ::= UNDER UDT_name

 

Если этот раздел присутствует в определении UDT, то в нем указывается имя ранее определенного UDT, атрибуты и методы которого будут наследоваться определяемым структурным типом. Структурные типы, определяемые без использования наследования, называются максимальными супертипами (поскольку у любого из таких типов супертип отсутствует).* В определениях максимального структурного супертипа или индивидуального типа обязан присутствовать раздел представления (AS):

 

representation ::= predefined_type
| (attribute_definition_ commalist)

 

Если в разделе представления указывается имя предопределенного встроенного типа, то определяется индивидуальный тип. Указание списка определений атрибутов соответствует определению структурного типа. Заметим, что раздел представления может отсутствовать. В этом случае должен присутствовать раздел подтипизации, и представление заново определяемого структурного типа полностью наследуется из определения структурного UDT, имя которого указано после ключевого слова UNDER.