oracle字段包含数组,Oracle中构造包含数组的表有哪些?

面向对象数据库中存储的是对象,对象有自己的行为和属性;  行为体现为类型的函数或者过程;属性体现为字段;  对象表确实有优势吗?  基于抽象类型创建关系表:和其他表的创建一样;  基于抽象类型创建对象表:create table 对象表名 of 抽象数据类型;  抽象类型可以复用:也就是说一个抽象类型中可以包含另一个抽象类型做为一个字段;  构造函数是默认创造的,参数包括类型的字段;  如果要插入数据到对象表,有两种方式:  一种就是insert into tablename values(字段1,字段2,。

。。。);  另一种就是我们如果想直接用构造函数构造一个大字段直接插入,  这时候不需要values,但必须用slect:  insert into tablename select 构造函数(字段1,字段。。。) from xxx;  创建带方法的类型:  首先说方法的定义:如果有返回值,用member function。

。。  没有返回值,member procedure。。。  ****以后再说;  可变数组  声明一下Oralce的oop中使用下列的对象类型:  ·抽象数据类型;  ·可变数组;  ·嵌套表;  ·对象表;  ·对象视图;  可变数组会根据存储数据的大小来真正存储数据而不是占用固定的空间,这类似  Java中的ArraryList类;  关系型理论中不允许一个表中的一个记录中存储其他表记录,  而Oracle中是支持的;这不是违反了数据的原子性原则吗?  但是这样有好处:  在用户查询的时候比两个表进行关联查询效率高;  所以说可变数组也可以做为一条记录的一个字段被存储在一个表中,  当然这是违反关系数据理论的;  创建可变数组的例子:  create or replace type mingxitype as object  (  goodsid varchar(15),  incount int,  providerid varchar(15)  );  /  create or replace type arrmingxitype as varray(100) of mingxitype;  /  create table instock  (  orderid int primary key,  indate date,  mingxi arrmingxitype  )  /  insert into instock  values(1001,to_date('2005-10-19','yyyy-mm-dd'),  arrmingxitype(mingxitype('101',10,'so1'),  mingxitype('193',30,'j02'),  mingxitype('104',32,'i92')  )  )  /  //table函数可以把可变数组转换为关系表的形式显示出来;  select * from table(select s。

mingxi from instock s where orderid=1001)  GOODSID INCOUNT PROVIDERID  --------------- ---------- ---------------  101 10 so1  193 30 j02  104 32 i92  可变数组的元素不能单独改,必须全部改;  所以可变数组适合的场合是:  用户不会修改的数据,历史性的数据就适合用可变数组;  删除数据是通用的;  //可变数组的基类型是用户定义的;所以这个基类型也可以是一般数据类型,比如int;  create or replace type arrayint as varray(30) of int;

完成 丢弃。

全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值