龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle数据库中的OOP概念(1)(3)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
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) / c

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 ,无限制。

精彩图集

赞助商链接