8c7f6c03

Методы объектов


Выше было рассмотрено определение типа, содержащее описание атрибутов (“свойств”). Создадим тип сотрудников, в котором определен еще и метод:

CREATE TYPE employee_typ AS OBJECT (

ename VARCHAR2(50),

hiredate DATE,

deptno NUMBER,

home REF address_typ,

MEMBER FUNCTION days_at_company RETURN NUMBER)

/

Для описания тела метода-функции необходимо создать тело типа (аналогия пакет – тело пакета в PL/SQL):

CREATE TYPE BODY employee_typ IS

MEMBER FUNCTION days_at_company RETURN NUMBER IS

BEGIN

RETURN TRUNC(SYSDATE-hiredate);

END;

END;

/

Создадим таблицу объектов-сотрудников:

DROP TABLE emp;

CREATE TABLE emp OF employee_typ;

INSERT INTO emp VALUES (

'Scott',

SYSDATE,

10,

(SELECT REF(a) FROM addr_list1 a

WHERE VALUE(a) = address_typ('123458', 'Boston 123... ')));

Пример обращения к методу:

COLUMN home.location FORMAT A20

SELECT e.ename, e.home.location, e.days_at_company() FROM emp e;



Содержание раздела