Oracle VARRAY

Oracle VARRAY(变长数组)通俗的讲就是一个存储有序的元素集合,而其每个元素都有一个相关索引,该索引相对应元素在数组中的位置。变长数组存在大小的限制,但是可以动态进行更改。

创建变长数组语句:

 
 
  1. Create Type varray_phone as varray(3) of varchar2(50);

接下来应用这个变长数组,先创建一个人员表,人员表中拥有一列电话,类型是变长数组,意思是这个人,可能有一个电话号码,也可能有2个,最多3个。

create table person3  
(  
id integer constraint person3_pk primary key,  
first_name varchar(20),  
last_name varchar(20),  
phone varray_phone  
)  

填充变长数组

 
 
  1. insert into person3 values(1,'yuan','weixiang',varray_phone('12345','34567','56789'));
  2. SQL> select * from person3;

表明该用户拥有3个电话号码。

当什么内容不添加的时候,查询结果如下:

 
 
  1. insert into person3 values(2,'hao','lihai',varray_phone());
  2. SQL> select * from person3;

修改变长数组中的元素

 
 
  1. update person3 set phone= varray_phone('12345','34567') where id = 2;

数据字典

user_varrays表

all_varrays表

修改变长数组的元素的长度大小

 
 
  1. Alter type varray_phone
  2. modify element type varchar2(60) cascade

cascade选项把更改传播到数据库中的依赖对象 Person3就是依赖对象

修改变长数组元素的数目

 
 
  1. alter type varray_phone modify limit 5 cascade

上述的相关内容就是对Oracle VARRAY的描述,希望会给你带来一些帮助在此方面。

定义

a varray is a variable length array object.

查看用户定义的类型:

select v.type_name, v.typecode, v.typeid, v.instantiable from user_types v

创建type


CREATE OR REPLACE TYPE Project AS OBJECT (
project_no NUMBER(2),
title VARCHAR2(35),
cost NUMBER(7,2));


创建varray

create or replace type projectlist as varray(50) of project
create table based on varray
CREATE TABLE department (
dept_id NUMBER(2),
name VARCHAR2(15),
budget NUMBER(11,2),
projects ProjectList);

向包含varray字段的表插入数据

INSERT INTO department
VALUES(30, 'Accounting', 1205700,
ProjectList (Project(1, 'Design New Expense Report', 3250),
Project(2, 'Outsource Payroll', 12350),
Project(3, 'Evaluate Merger Proposal', 2750),
Project(4, 'Audit Accounts Payable', 1425)));


删除包含varry字段的表记录

delete department t where t.dept_id=30


更详细资料见:http://book.51cto.com/art/200910/157518.htm

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23216740/viewspace-1044785/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23216740/viewspace-1044785/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值