WEB开发网
开发学院数据库Oracle 基于Oracle的面向对象技术基础简析 阅读

基于Oracle的面向对象技术基础简析

 2006-08-06 12:00:35 来源:WEB开发网   
核心提示: create table emp(emp_id number(5);emp_name varchar2(20);emp_salary number(4););这样emp表的一个记录就是一个empObj对象,插入一个表的操作就可以为:insert into emp values (empOb

create table emp
(
emp_id number(5);
emp_name varchar2(20);
emp_salary number(4);
);

这样emp表的一个记录就是一个empObj对象,插入一个表的操作就可以为:

insert into emp values (empObj(10006,'marry',5000));

注意,这里表中列类型与对象的属性类型应该一一对应,另外这样存储将忽略对象的成员函数的信息。

三、对象操作与比较

可以采用DML语句对对象进行操作,其操作的语法跟一般的数据类型完全一样,比如在table1表中返回对象为empObj(10002,’mike’,3000)的记录:

select * from table1 where emp=empObj(10002,'mike',3000);

如果需要进行对象的大小比较,那么用一般的方法就很难处理,毕竟对象含有一组属性,无法进行组合比较。可以采用向对象加入map方法和order方法来解决此问题,前者是通过将对象某一属性返回代表对象的值班来比较大小,后者是通过比较两个对象之间某个属性的值班来获取对象的大小。由于两者的相似性,这里以用途更广的map成员函数为为例示范如下:

create or replace type empObj as object (
 emp_id number(5),
 emp_name varchar2(20),
 emp_salary number(4),
 --object’s function
 member function addsalary(ext_salary number) return varchar2,
 map member function ID return number
);
--object's body
create or replace type body empObj as member function addsalary return varchar2 is
begin
 emp_salary :=emp_salary +ext_salary ;
 return to_char(emp_salary);
end addsalary;
--map function's body
map member function ID return number is
begin
 return emp_id;
 end ID;
end;

这样定义了map函数后,对empObj对象大小的比较实质转化为对各个对象的emp_id属性大小的比较,在实际操作中,应该根据实际情况来返回关心的数据,以进行对象大小比较的操作。

四、小结

通过前面内容的介绍,大家应该对Oracle数据库的面向对象的特性有一个初步的认识,充分利用Oracle的这一特性,可以将面向对象的重用性,可扩展性等优点引入到数据库中,提高了数据库的运行性能。

上一页  1 2 3 

Tags:基于 Oracle 面向

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接