Database Programming & Design



Определяемые пользователями типы


В DB2 определяемые пользователями типы данных называются

"индивидуальными типами" (distinct type"). В каждом из

индивидуальных типов используется общее представление одного из

встроенных типов (называемых "базовыми типами"), но может иметься

собственный набор допустимых операций.

Следующие операторы создают два индивидуальных типа с именами

DOLLARS и YEN, базирующихся на встроенном типе Decimal. Фраза

WITH COMPARISONS означает что можно сравнить любые два значения

типа DOLLARS и любые два значения типа YEN, однако значение типа

DOLLARS не может быть сравнено со значением типа YEN или с

обычным десятичным значением.

CREATE DISTINCT TYPE DOLLARS AS DECIMAL (10,2) WITH COMPARISONS;

CREATE DISTINCT TYPE YEN AS DECIMAL (10,2) WITH COMPARISONS;

При создании индивидуального типа DB2 генерирует функцию,

преобразующие значение индивидуального типа в значение его

базового типа и наоборот. Например, при создании типа DOLLARS

создаются функции преобразования DOLLARS(DECIMAL) со значением

типа DOLLARS и DECIMAL(DOLLARS) со значением типа DECIMAL(10,2).

Сразу после создания индивидуального типа единственными

операторами, применимыми к его значениям, являются операторы

сравнения. Например, если SALARY и BONUS - это два столбца типа

DOLLARS, то SALARY=BONUS и SALARY>BONUS являются допустимыми

предикатами, но выражения SALARY+BONUS и SALARY*BONUS не

допускаются, поскольку для типа DOLLARS не определены

арифметические операции.

Легко указать, какие из операций базового типа являются

осмысленными для созданного на его основе индивидуального типа.

Каждый встроенный оператор, такой как "+", реализуется функций с

тем же именем, что и оператор. Чтобы сделать этот оператор

применимым к индивидуальному типу, нужно просто создать функцию с

тем же именем, что и оператор, принимающую параметры и/или

возвращающую результат индивидуального типа данных. Функция,

реализующая оператор, может основываться на функции, реализующей




Содержание  Назад  Вперед