end;
/
比较抽象数据类型的数据:declare
l_employee1 employee;
l_employee2 employee;
begin
l_employee1 :=employee.new(12345,null);
l_employee2 :=employee.new(67890,null);
if l_employee1= l_employee2 then
dbms_output.line_put(“They are equal”);
end if;
end;
/
使用map 指定具体比较哪些属性:create or replace
type employee as object(
name person,
empno number,
hiredate date,
sal number,
commission number,
map member function convert return number)/
create or replace
type body employee as
map member function convert return number is begin return self.empno; end;end;
/
再比较:
declare
l_employee1 employee;
l_employee2 employee;
begin
l_employee1 :=employee.new(12345,null);
l_employee2 :=employee.new(67890,null);
if l_employee1= l_employee2 then
dbms_output.line_put(“They are equal”);
end if;
if l_employee1> l_employee2 then
dbms_output.line_put(“employee1 is greater”);
end if;
if l_employee1< l_employee2 then
dbms_output.line_put(“employee2 is greater”);
end if;
end;
/
Order 方法:create or replace
type employee as object(
name person,
empno number,
hiredate date,
sal number,
commission number,
order member function match(p_employee employee) return integer)/
create or replace
type body employee as
order member function match(p_employee employee) return integer is begin if self.empno> p_employee.empno then return 1; elseif self.empno< p_employee.empno then return -1; else return 0; end if; end;end;
/
继承:FINAL / NOT FINAL
对象默认FINAL,表示不可以被继承;
MEMBER方法也能指定是否FINAL,表示能否在子类中对他进行覆写。默认NOT FINAL
Create or replace type super_type as object(
N number,
Final member procedure cannot_override
)
not final
/






