Mega Code Archive
The NOT FINAL clause indicates that object can be inherited from when defining another type
Default is FINAL, meaning that the object type cannot be inherited from.
To have a new type inherit attributes and methods from an existing type, you use the UNDER clause when defining your new type.
SQL> CREATE Or Replace TYPE AddressType AS OBJECT (
2 street VARCHAR2(15),
3 city VARCHAR2(15),
4 state CHAR(2),
5 zip VARCHAR2(5)
6 )
7 /
Type created.
SQL>
SQL> CREATE Or Replace TYPE PersonType AS OBJECT (
2 id NUMBER,
3 first_name VARCHAR2(10),
4 last_name VARCHAR2(10),
5 dob DATE,
6 phone VARCHAR2(12),
7 address AddressType
8 ) NOT FINAL;
9 /
Type created.
SQL>
SQL> CREATE Or replace TYPE business_PersonType UNDER PersonType (
2 title VARCHAR2(20),
3 company VARCHAR2(20)
4 )
5 /
Type created.
SQL>
SQL> CREATE TABLE object_business_customers OF business_PersonType
2 /
Table created.
SQL>
SQL> INSERT INTO object_business_customers VALUES (
2 business_PersonType(1, 'John', 'Brown', '01-FEB-1933', '800-555-3333',
3 AddressType('2 Ave', 'town', 'MA', '12345'),'Manager', 'XYZ Corp')
4 );
1 row created.
SQL>
SQL> SELECT *
2 FROM object_business_customers;
ID FIRST_NAME LAST_NAME DOB PHONE ADDRESS(STREET, CITY, STATE, ZIP) TITLE COMPANY
-------------------- --------------------
1 John Brown 01-FEB-33 800-555-3333 ADDRESSTYPE('2 Ave', 'town', 'MA', '12345') Manager XYZ Corp
SQL>
SQL> drop table object_business_customers;
Table dropped.
SQL>
SQL> drop type business_PersonType;
Type dropped.
SQL>
SQL> drop type persontype;
Type dropped.
SQL>
SQL> drop type addresstype;
Type dropped.
SQL>