Object Oriented Oracle PLSQL Tutorial

SQL>
SQL> create or replace type address_type as object
  2    ( city    varchar2(30),
  3      street  varchar2(30),
  4      state   varchar2(2),
  5      zip     number
  6    )
  7  /
Type created.
SQL> create or replace type person_type as object
  2    ( name             varchar2(30),
  3      dob              date,
  4      home_address     address_type,
  5      work_address     address_type
  6    )
  7  /
Type created.
SQL> create table people of person_type
  2  /
Table created.
SQL> insert into people values ( 'Tom', '15-mar-1965',
  2    address_type( 'R', '1 Street', 'Va', '45678' ),
  3    address_type( 'R', '1 Way', 'Ca', '23456' ) );
1 row created.
SQL> /
1 row created.
SQL>
SQL> select * from people;
NAME                           DOB
------------------------------ ---------
HOME_ADDRESS(CITY, STREET, STATE, ZIP)
----------------------------------------------------------------------------------------------------
WORK_ADDRESS(CITY, STREET, STATE, ZIP)
----------------------------------------------------------------------------------------------------
Tom                            15-MAR-65
ADDRESS_TYPE('R', '1 Street', 'Va', 45678)
ADDRESS_TYPE('R', '1 Way', 'Ca', 23456)
Tom                            15-MAR-65
ADDRESS_TYPE('R', '1 Street', 'Va', 45678)
ADDRESS_TYPE('R', '1 Way', 'Ca', 23456)
NAME                           DOB
------------------------------ ---------
HOME_ADDRESS(CITY, STREET, STATE, ZIP)
----------------------------------------------------------------------------------------------------
WORK_ADDRESS(CITY, STREET, STATE, ZIP)
----------------------------------------------------------------------------------------------------
SQL>
SQL> drop table people;
Table dropped.
SQL> drop type person_type;
Type dropped.
SQL> drop type address_type;
Type dropped.