Constructors in hierarchical types
SQL> SQL> SQL> SQL> create or replace 2 type person as object ( 3 first_name varchar2(100), 4 last_name varchar2(100), 5 dob date, 6 phone varchar2(100), 7 member function get_last_name return varchar2, 8 member function get_phone_number return varchar2 ) 9 not final 10 / Type created. SQL> SQL> SQL> create or replace 2 type body person as 3 member function get_last_name return varchar2 is 4 begin 5 return self.last_name; 6 end; 7 member function get_phone_number return varchar2 is 8 begin 9 return self.phone; 10 end; 11 end; 12 / Type body created. SQL> SQL> create or replace 2 type new_employee under person ( 3 empno number, 4 hiredate date, 5 work_phone varchar2(100), 6 overriding member function get_phone_number return varchar2, 7 member function get_home_phone_number return varchar2 ) 8 not final 9 / Type created. SQL> SQL> create or replace 2 type body new_employee as 3 overriding member function get_phone_number return varchar2 is 4 begin 5 return self.work_phone; 6 end; 7 member function get_home_phone_number return varchar2 is 8 begin 9 return self.phone; 10 end; 11 end; 12 / Type body created. SQL> SQL> create table person_table( p person ); Table created. SQL> SQL> insert into person_table values 2 ( person( null, 'Kyte', null, '703.555.5555' ) ) 3 / 1 row created. SQL> SQL> insert into person_table values 2 ( new_employee( null, 'Beck', null, '703.555.1111', 1234, null, '703.555.2222' ) ) 3 / 1 row created. SQL> SQL> insert into person_table values 2 ( new_employee( null, 'Viper', null, '703.555.3333', 5678, null, '703.555.4444' ) ) 3 / 1 row created. SQL> SQL> select * from person_table; P(FIRST_NAME, LAST_NAME, DOB, PHONE) -------------------------------------------------------------------------------- NEW_PERSON(NULL, 'Kyte', NULL, '703.555.5555') NEW_EMPLOYEE(NULL, 'Beck', NULL, '703.555.1111', 1234, NULL, '703.555.2222') NEW_EMPLOYEE(NULL, 'Viper', NULL, '703.555.3333', 5678, NULL, '703.555.4444') SQL> drop table person_table; Table dropped. SQL> SQL> drop type new_employee; Type dropped. SQL> SQL> drop type person; Type dropped. SQL> SQL>
1. | Under a type | ||
2. | Save type hierarchy to one table with parent type as the column type | ||
3. | dependencies among object types. | ||
4. | Mutual-exclusion inheritance using "under" |