oracle 集合collection

集合分类:

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')

 

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

转载于:http://blog.itpub.net/11813230/viewspace-671585/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值