1.exists:判断某集合元素是否存在
declare
??type ename_table_type is table of emp.ename%type;
??ename_table ename_table_type;
begin
??if ename_table.exists(1) then
?? ?dbms_output.put_line('存在');
?? ?else
?? ? ?dbms_output.put_line('不存在');
??end if;
end;
/
2.count:返回集合元素的个数 例如:ename_table.count
3.limit:返回该集合允许的最大元素个数 索引表和嵌套无边界所以返回null 例如:ename_table.limit
4.first、last:返回集合第一个和最后一个元素的下标 例如:ename_table.first
5.frior、next:返回当前集合元素的前、后一个元素的下标 例如:ename_table.frior(5)
6.extend:用于扩展集合变量的尺寸,只适用于嵌套表和varray,有如下形式
?? extend:为集合变量添加一个null元素
?? extend(n):为集合变量添加n 个null元素
?? extend(n,i):为集合添加n个元素,元素值与第i个元素相同
7.trim:用于从集合尾删除元素, trim删除一个 trim(n)删除n个
8.delete 删除集合元素,只适用于嵌套和索引表
??delete:删除所有元素 ?delete(n) 删除第n 个元素 ?delete(m,n)删除集合变量从m到n之间的所有元素
?
给集合赋null值,只需将一个集合等于另一个没赋值的集合
?
?
集合操作符:
1.set:返回取消特定嵌套表中的重复值的嵌套表
declare
??type nt_table_type is table of integer;
??nt_table nt_table_type := nt_table_type(2,4,3,2,1);
??res nt_table_type;
begin
??res := set(nt_table);
??for i in 1..res.count loop
?? ?dbms_output.put_line(res(i));
??end loop;
end;
/
2.multiset union:取得两个嵌套表的并集 用法:
??result = nt1 multiset union nt2;
3.multiset union distinct:取得并集,去掉重复值
?? ? result = nt1 multiset union distinct nt2;
4.multiset intersect:取得交集
??result = nt1 multiset intersect nt2;
5.multiset except:取差集
??result = nt1 multiset except nt2;
?
?
集合的比较:
1. array_name is null:检测是否为空
2.ename_table1 = ename=table2:比较两个集合是否完全相同
嵌套表的:
3.cardinality:返回元素个数
4.submultiset of:是否是子表
5.member of:是否包含特定元素 v1 member of nt1?
6.is a set:检测是否包含重复元素值 nt1 is a set
?