集合分类:
1、变长数组varray
create type varray_typ as varray(2) of varchar2(20);
2、嵌套表
create type nested_typ as table of varchar2(2)[or other type];
1和2的混合体:多级集合。
oracle 10g新增的
3、关联数组。相当于MAP
type assoc_typ is table of number index by varchar2(12);
-----------------------------10g增加的其他特性(以下内容)
alter type varray_typ modify element type varchar2(90) cascade;--修改元素长度
alter type varray_typ modify limit 5 cascade;----增加数长度
一些方法
count
delete;elete(n );delete(n.m)
exists(n)
extend;extend(n);extend(n.m0;
first
last
next(n);
prior(n)--返回n个元素前面的序号
trim--删除最后的元素
trim(n);--删除后面的N个元素
一些关键运算符
= <>---类型相同,元素个相同,元素相同
in not in
submultiset 一个嵌套表是否是另一个嵌套表的子集
---tb1 submultiset of tb2
multiset |union |intersect|except [all|distinct两个嵌套表的运算:并集,交,差。
cardinality ===count
------cardinality(nested_typ)
member of
set --取出重复元素
is a set 检查嵌套表中个元素是否各不相同
is empty
collect 把结果作为嵌套表返回
---select collect(xxxx) from tab
powermultiset 嵌套表的子集嵌套表
select * from table(powermultiset(nested_typ('1','2')));
powermultiset _by_cardinalit 定长的嵌套表子集
select * from table(powermultiset(nested_typ('1','2'')),1)
例子
SQL> CREATE OR REPLACE Type nest_typ As Table Of varchar2(16);
2 /
Type created.
SQL> Select * From
2 Table(nest_typ('1','2'));
COLUMN_VALUE
----------------
1
2
SQL> Select * From
2 Table(powermultiset(nest_typ('1','2')));
COLUMN_VALUE
--------------------------------------------------------------------------------
NEST_TYP('1')
NEST_TYP('2')
NEST_TYP('1', '2')
SQL> Select * From
Table(powermultiset_by_cardinality(nest_typ('1','2'),1));
COLUMN_VALUE
--------------------------------------------------------------------------------
NEST_TYP('1')
NEST_TYP('2')