ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 集合collection

oracle 集合collection

原创 Linux操作系统 作者:sieper 时间:2010-08-22 17:33:42 1 删除 编辑

集合分类:

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博客 ” ,链接:https://blog.itpub.net/11813230/viewspace-671585/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-03-17

  • 博文量
    87
  • 访问量
    210535