标签:
杂谈 |
分类: Oracle基础 |
简介.
对象 在数据库中的可用性 是一个非常重要的突破,
通过使用对象,用户可以在数据库中定义自己的类,所创建的自定义类就是对象类型Object type
数据库的对象类型与 Java和C#中的类相似,都可以包含属性(存储对象的状态)和方法(用于建立对象的行为模型)。
对象类型 包括: A、对象类型规范(Object Type Specification)
B、对象类型体(Object Type Body)
* 对象类型规范:对象与应用的接口,用于定义对象的公用属性和方法
* 对象类型体:用于实现对象类型规范所定义的公用方法。
创建.
sys@SDROLUN>create type stu as object(
2
name varchar2(20),
3
sex varchar2(2),
4
birthday date,
5
note varchar2(300)
6
);
7 /
类型已创建。
create">sys@SDROLUN>create
type stus as object(
2
sid number(4),
3
student stu
4
);
5 /
类型已创建。
create">sys@SDROLUN>create
table students(
2
sid number(4) not null,
3
student stu
4
);
表已创建。
创建带有函数的对象类型
sys@>create type stu3 as object(
2
name varchar2(20),
3
sex varchar2(2),
4
birthday date,
5
note varchar2(300),
6
member function get_age return number
7 );
8 /
类型已创建。
sys@>create or replace type body stu3 as
2 member
function get_age return number as
3
v_months number;
4 begin
5
select floor(MONTHS_BETWEEN(sysdate,birthday)/12) into v_months
from dual;
6
return v_months;
7 end;
8 end;
9 /
类型主体已创建。
在数据库表中使用对象类型. A、列对象 B、对象表
使用列对象
sys@SDROLUN>create table student4( sid number(4), student stu3);
表已创建。
sys@SDROLUN>insert into student4(sid,
student)
2 values
(1,stu3('王晓雪','女',to_date('19820922', 'YYYYMMDD'),'My note'));
已创建 1 行。
已用时间: 00: 00: 00.01
sys@SDROLUN>insert into student4(sid, student)
2 values
(2,stu3('杨晓琪','男',to_date('19840330', 'YYYYMMDD'),'My note'));
已创建 1 行。
已用时间: 00: 00: 00.01
sys@SDROLUN>commit;
提交完成。
已用时间: 00: 00: 00.01
sys@SDROLUN>select * from student4;
SID
STUDENT(NAME, SEX, BIRTHDAY, NOTE)
------------------------------------------------------------------------------------------------
1 STU3('王晓雪', '女', '22-9月 -82', 'My note')
2 STU3('杨晓琪', '男', '30-3月 -84', 'My note')
已用时间: 00: 00: 00.03
sys@SDROLUN>select student from student4;
STUDENT(NAME, SEX, BIRTHDAY, NOTE)
--------------------------------------------------------------------------------------
STU3('王晓雪', '女', '22-9月 -82', 'My note')
STU3('杨晓琪', '男', '30-3月 -84', 'My note')
已用时间: 00: 00: 00.01
.
.