Объектные типы и объектные таблицы
Объектные типы в Oracle8 являются аналогом типа записи в IUS. Как и в IUS , для доступа к отдельным полям значений объектного типа используется “точечная” нотация.
В Oracle 8 i при определении объектного типа можно, помимо спецификации структуры значений этого типа, определить и набор методов данного типа. Методы представляют собой функции или процедуры, написанные на PL/SQL, Java, C или другом языке89 и сохранённые в БД или вне её (при наличии регистрации в БД).
Любой метод объектного типа попадает в одну из трёх категорий:
Методы-члены вызываются в нотации
имя_объекта.имя_метода ( список_параметров )
имеют неявный параметр SELF и могут обращаться к значениям атрибутов объекта90.
Статические методы вызываются в нотации
имя_объектного_типа.имя_метода ( список_параметров )
и не могут обращаться к значениям атрибутов конкретных объектов.
Методы сравненияслужат для сравнения экземпляров объектов. Сравнение объектов может производиться с помощью методов вида MAP или вида ORDER. Метод типа MAP принимает в качестве параметра объект некоторого объектного типа, а возвращает значение одного из встроенных типов, которое может использоваться в операциях сравнения и сортировки. Таким образом, этот метод выполняет отображение объекта
на значение одного из встроенных типов.
Метод типа ORDER сравнивает два объекта и возвращает –1, если первый объект
меньше второго, 0, если объекты равны, и 1, если первый объект больше второго.
Если при определении объектного типа метод сравнения не задан, то объекты этого типа можно сравнивать только на равенство/неравенство, причём объекты не должны содержать элементов тип LOB. Тогда объекты считаются считаться равными, в том и только в том случае, когда все их элементы не содержат неопределенных значений, и значения соответствующих элементов совпадают.
Каждый объектный тип имеет определяемый системой метод-конструктор, который
создаёт новый объект этого типа и присваивает значения его атрибутам.
Метод-конструктор – это функция, которая возвращает объект данного типа. Имя метода-конструктора совпадает с именем объектного типа, имена и типы параметров
конструктора – с именами и типами атрибутов объектного типа.
Объектной таблицей в Oracle 8 называется таблица, строки которой имеют объектный тип. В Oracle 8 не поддерживалось наследование (ни типов, ни таблиц), но уже в Oracle 8 i появилась возможность наследования таблиц почти в той же форме, как это делалось в IUS , но без поддержки параллельной иерархии наследования объектных типов 91.
К объектным представлениям можно обращаться так же, как и к объектным таблицам (по крайней мере, по выборке данных). Можно определять объектные представления на основе других представлений (возможно, объектных).