技术开发 频道

Oracle中的OOP概念

  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

  /

  create or replace type sub_type under super_type(

  overriding member procedure cannot_override

  )

  /

  show error

  若super_type 改成final

  INSTANTIABLE / NOT INSTANTIABLE

  可否被实例化,后者类似于抽象类

  create or replace type shape as object(

  number_of_sides number,

  not instantiable member function calculate_area return number

  )

  not instantiable not final

  /

  实例化该类型对象:

  declare

  l_shape shape;

  begin

  l_shape:=shape(2);

  end;

  /

  可变数组(VARRAYS):

  create type employee_type as object(

  employee_id number,

  first_name varchar2(30),

  last_name varchar2(30)

  )

  /

  create type employee_list_type as varray(50) of employee_type

  /

  create table departments(

  department_id number,

  department_name varchar2(30),

  manager employee_type,

  employees employee_list_type)

  /

  insert into departments values

  (10,

  ‘HR’,

  employee_type(1,’Dony’,’Chen’),

  employee_list_type(

  employee_type(2,’Hua’,’Li’)

  employee_type(3,’Wu’,’Wang’)

  employee_type(4,’San’,’Zhang’))

  )

  /

  column department_name format a13

  column employee_type format a63 word_wrapped

  select * from departments

  /

  嵌套表(Nested table):

  create type order_item_type as object(

  line_item_id number(3),

  product_id number(6),

  unit_price numbe(8,2),

  quantity number(4)

  )

  /

  create type order_item_list_type as table of order_item_type

  /

  create table orders(

  order_id number(12) not null,

  order_date date,

  customer_id number(6),

  order_items order_item_list_type)

  nested table order_items store as order_items_tab

  /

  insert into orders values(

  (1, sysdate, 10,

  order_item_list_type(

  order_item_type(1,2,3,4),

  order_item_type(2,3,4,5)

  ))

  /

  多少个order_item_type ,无限制。

0
相关文章