现在的位置: 首页 > 综合 > 正文

oracle 面向對象(1)

2012年10月16日 ⁄ 综合 ⁄ 共 2004字 ⁄ 字号 评论关闭

                       Oracle 面向對象3

关系数据库在不断地发展时,许多数据库引入了面向对象的思想,这其中以Oracle为代表,Oracle9i就号称面向对象数据库。 Oracle9i以来,Oracle就不再是单纯的关系数据库管理系统,它在关系数据库模型的基础上,添加了一系列面向对象的特性。Oracle的对象体系遵从面向对象思想的基本特征,许多概念同C++,JAVA中类似,具有继承,重载,多态等特征,但又有自己的特点。

1 Oracle面向对象的最基本元素是它的对象类型——Type
下面开始写自定义对象类型( as object 必须关键字)

1 create or replace type ADDRESS as  object
2 
(
3      PROVINCE varchar(10
),
4      CITY varchar(20
),
5      STREET varchar(30
)
6 );


创建表并使用以上对象类型ADDRESS

1 create table  STUDENTOBJ 
2 
(
3     STUNAME varchar(20
),
4 
    STUADD  ADDRESS
5 
);
6 

7 
向表中插入数据:
8 insert into STUDENTOBJ values('improviser',ADDRESS('广东省','广州市''江海大道');


通过别名对表进行查询

1 select  S.STUNAME S.ADDRESS.PROVINCE S.ADDRESS.CITY
2 S.ADDRESS.STREET 
from  STUDENTOBJ S;


从上面的测试代码,可以很容易看到其与面向对象语言(比如Java)的差异,不必使用new创建实例,也没有了默认无参数构造器,默认使用定义的属性作为构造器参数,足以描述各种实体。另外,Type的属性没有private,protected,public的说法,所有的属性调用者都可以访问,即都是public

2Oracle中面向对象特征——继承(父类型必须声明为NOT FINAL,子类型使用关键字UNDER)

 1  创建父类型
 2 create or replace type PERSON as  object
 3 
(
 4     PERNAME varchar(10
),
 5     PERSEX varchar(2
)
 6 )not
 final;
 7 

 8 
子类型继承父类型
 9 create or replace  type STUDENT under PERSON
10 
(
11     STUNO varchar(8
),
12     STUSCORE varchar(10
)
13 
);

由以上定义,其子类型中属性包含了父类型中所有属性。


3、可变数组
可变数组,是一种集合。一个可变数组是对象的一个集合,其中每个对象都具有相同的数据类型。可变数组的大小由创建时决定。在表中建立可变数组后,可变数组在主表中作为一个列对待。

 1  创建对象类型
 2 create or replace type ADDRESS as  object
 3 
(
 4     PROVINCE varchar(10
),
 5     CITY varchar(20
),
 6 
);
 7 

 8 
创建ADDRESS可变数组
 9 create or replace type ADDRESS_LIST as varray(3of  ADDRESS;
10 

11 
创建表并使用可变数组ADDRESS_LIST
12 create table
 STUDENT 
13 
(
14     STUNAME varchar(20
),
15 
    STUADDS ADDRESS_LIST
16 
);
17 

18 
向表中插入数据
19 insert into STUDENT values('improviser',ADDRESS_LIST(ADDRESS('广东省','广州市','江海大道' ),
                                           ADDRESS(
'
广东省 ' , ' 潮州市 ' , ' 潮枫路 ' )));
20 

21 
查询(使用table函数将数据表格形式输出)
22 select *from table(select s.STUADDS from STUDENT where STUNAME='improviser');


4、嵌套表
嵌套表是表中之表,一个嵌套表是某些行的集合,它在主表中表示为其中的一列。对主表中的每一条记录,嵌套表可以包含多个行。

 1  定义嵌套表方法:
 2 create or replace type ADDRESS_TABLE as table of ADDRESS;
 3 

 4 
基本对象类型、创建表、查询和插入数据都跟上面可变数组一样
 5 

抱歉!评论已关闭.