在plsql中,面向对象的程序设计是基于对象类型来完成的。对象类型是用户自定义的一种复合数据类型,它封装了数据结构和用于操纵这些数据结构的过程和函数,在建立复杂应用程序时,通过使用对象类型可以降低应用开发难度,进而提高应用开发的效率和速度。
对象类型包括对象类型规范(object type specification)和对象类型体(object type body)两个部分。其中对象类型规范是对象与应用的接口,它用于定义对象的公用属性和方法;而对象类型体则用于实现对象类型规范所定义的公用方法,如果对象类型规范中没有定义方法,则可以不定义对象类型体。
对象类型属性用于描述对象所具有的特征,每个对象类型至少包含一个属性,至多可以包含1000个属性。对象类型的属性不能使用long、long raw、rowid、urowid、plsql的特有类型(binary_integer,Boolean,%type,%rowtype,ref cursor,record,pls_integer)等。并且在定义对象类型属性时,既不能指定对象属性的默认值,也不能指定notnull选项。
行对象是指直接基于对象类型所建立的表,列对象是指在建表时指定了对象类型列的对象表。下面给出了操作行对象的代码,列对象操作方式类似。
示例1:行对象数据操作(包含列对象数据的操作类似)
--
建立对象类型
create
or
replace
type
person_obj
as
object
(
name
varchar2
(
10
),gender
number
(
1
),birthday
date
);
--
建立行对象(基于
person_obj
)
create
table
person_table
of
person_obj;
--
为行对象插入数据
insert
into
person_table
values
(person_obj(
'jax01'
,
1
,
sysdate
));
--
构造方法
insert
into
person_table
values
(
'jax02'
,
1
,
sysdate
);
--
普通方法
--
检索行对象数据
select
*
from
person_table
where
name
=
'jax01'
;
--
更新行对象数据
update
person_table
set
birthday = to_date(
'2004-05-12'
,
'YYYY-MM-DD'
)
where
gender =
0
;