Object Oriented Database Oracle PLSQL

SQL>
SQL> create or replace
  2  type person as object(
  3   first_name varchar2(100),
  4   last_name varchar2(100) )
  5  /
Type created.
SQL>
SQL> alter type person
  2  add attribute dob date
  3  cascade not including table data
  4  /
Type altered.
SQL>
SQL> create or replace
  2  type employee as object(
  3   name person,
  4   empno number,
  5   hiredate date,
  6   sal number,
  7   commission number,
  8   order member function match ( p_employee employee ) return integer )
  9  /
Type created.
SQL>
SQL> create or replace
  2  type body employee as
  3   order member function match ( p_employee employee ) return integer is
  4   begin
  5    if self.empno > p_employee.empno then
  6      return 1;
  7    elsif self.empno < p_employee.empno then
  8      return -1;
  9    else
 10      return 0;
 11    end if;
 12   end;
 13  end;
 14  /
Type body created.
SQL>
SQL>
SQL> declare
  2   emp1 employee;
  3   emp2 employee;
  4  begin
  5   emp1 := employee( null, 12345, '01-JAN-01', 100, 100 );
  6   emp2 := employee( null, 67890, '01-JAN-01', 100, 100 );
  7   if emp1 > emp2 then
  8     dbms_output.put_line( 'Employee 1 is greater' );
  9   end if;
 10   if emp1 < emp2 then
 11     dbms_output.put_line( 'Employee 2 is greater' );
 12   end if;
 13   if emp1 = emp2 then
 14     dbms_output.put_line( 'Employees are equal' );
 15   end if;
 16  end;
 17  /
PL/SQL procedure successfully completed.
SQL>
SQL> drop type employee;
Type dropped.
SQL>
SQL> drop type person;
Type dropped.
SQL>
SQL>