The NOT FINAL clause indicates that object can be inherited from when defining another type. : Type Inheritance « Object Oriented « Oracle PL/SQL Tutorial






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>
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>
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>
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>
SQL>








32.5.Type Inheritance
32.5.1.Type Inheritance
32.5.2.The NOT FINAL clause indicates that object can be inherited from when defining another type.
32.5.3.NOT FINAL clause
32.5.4.Insert data into table with inheritecd columns
32.5.5.select from inherited object columns
32.5.6.NOT INSTANTIABLE Object Types
32.5.7.Query table with sub type column
32.5.8.Insert into table with sub type column