数据库对象类型

对象 在数据库中的可用性 是一个非常重要的突破,

通过使用对象,用户可以在数据库中定义自己的,所创建的自定义类就是对象类型Object type

数据库的对象类型与 Java和C#中的类相似,都可以包含属性(存储对象的状态)和方法(用于建立对象的行为模型)。

对象类型 包括: A、对象类型规范(Object TypeSpecification)

               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>createtype stus as object(
 2         sid number(4),
 3         student stu
 4        );
  5  /

类型已创建。

create">sys@SDROLUN>createtable 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    memberfunction get_age return number as
 3     v_months number;
 4    begin
 5     select floor(MONTHS_BETWEEN(sysdate,birthday)/12) into v_monthsfrom 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

.

.

 

前一篇: 其他模式对象
后一篇: SQL 优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值