加载中…
个人资料
黄瓜园儿
黄瓜园儿
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,141
  • 关注人气:16
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

数据库对象类型

(2011-07-24 23:52:39)
标签:

杂谈

分类: 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

.

.

 

0

阅读 收藏 喜欢 打印举报/Report
前一篇:其他模式对象
后一篇:SQL 优化
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有