可变数组
可变数组与嵌套表相似,也是一种集合。一个可变数组是对象的一个集合,其中每个对象都具有相同的数据类型。可变数组的大小由创建时决定。在表中建立可变数组后,可变数组在主表中作为一个列对待。从概念上讲,可变数组是一个限制了操作个数的嵌套表。
可变数组,允许用户在表中存储重复的属性。例如:在嵌套表时使用过的部门表,一个项目可以有多个项目,用户使用可变数组这一类型可以在部门中设置多个项目的名字,如果限定每个部门的项目不超过3个,则可以建立一个10个数据项为限的可变数组。之后就可以处理此可变数组,可以查询每一个部门的所有项目信息
可变数组--范例
创建项目数组
Create or replace type kingsql_varray as varray(3) of varchar2(50);
定义部门表,使用可变数组
Drop table department purge
Create table department3(
Did number,
Deptname varchar(30) not null,
Projects kingsql_varray);
定义复合类型的可变数组
创建一个表示项目类型的对象
Create or replace type project_type as object(
Projectid number,
Projectname varchar(50),
Projectfunds number,
Pubdate date);
定义新的数组类型
CREATE OR REPLACE TYPE project_varray AS VARRAY(3) OF project_type ;
定义数据表,使用可变数组
DROP TABLE department PURGE ;
CREATE TABLE department (
did NUMBER ,
deptname VARCHAR(50) NOT NULL ,
projects project_varray ,
CONSTRAINT pk_did PRIMARY KEY (did)
) ;
Insert into department
Values(1,’hehe’,project_varray(project_type(1,’hehe’,1,sysdate)));
Insert into department
Values(2,’haha’,project_varray(project_type(2,’haha’,2,sysdate),project_type(22,’haha’,22,sysdate),project_type(222,’haha’,222,sysdate)));
Insert into department
Values(3,’gaga’,project_varray(project_type(3,’gaga’,3,sysdate),project_type(33,’gaga’,33,sysdate),project_type(333,’gaga’,333,sysdate),project_type(3333,’gaga’,3333,sysdate)));
会报错,超过可变数组最大值限制
可变数组--范例
在PL/SQL中使用可变数组
Declare
Type project_varray is varray(3) of varchar(50);
Projects project_varray:=project_varray(null,null,null);
Begin
Projects(1):=’OCP’;
Projects(2):=’OCM’;
Projects(3):=’MYSQL’;
For x in projects.first .. projects.last loop
Dbms_output.put_line(projects(x));
End loop;
End;
/
原文地址:https://www.cnblogs.com/kawashibara/p/9090202.html