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>
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> declare
2 l_emp employee;
3 begin
4 l_emp := employee( person( 'Tom', 'K', sysdate ), 12345, '01-JAN-01',1,1);
5 dbms_output.put_line( 'Empno: ' || l_emp.empno );
6 dbms_output.put_line( 'First Name: ' || l_emp.name.first_name );
7 end;
8 /
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL> drop type employee;
Type dropped.
SQL>
SQL> drop type person;
Type dropped.
SQL>
SQL>
|