集合常用方法和过程

来源:互联网 发布:网络组策略如何打开 编辑:程序博客网 时间:2024/04/30 21:32

集合常用方法
方法:exists,count,limit,first,last,prior,next
过程:extend,trim,delete
extend,trim只适用于嵌套表和数组,对索引表不适用
delete 只适用于索引表和嵌套表,对数组不适用
1.exists 确定集合元素下标是否存在,存在返回true,不存在返回false
用法: 集合名.exists(下标)  --注意,判断的是下标,嵌套表和数组需要初始化

declare  type ename_table_type is table of emp.ename%type index by binary_integer;  ename_table ename_table_type;  --初始化一个元素begin  ename_table('2'):='ze';  if ename_table.exists('2') then    --ename_table.exists('3')返回false      dbms_output.put_line(ename_table('2'));  else      dbms_output.put_line('必须初始化集合元素');  end if;end;


2.count 返回当前集合变量中元素总个数,统计结果包含null元素

declare   type ename_table_type is varray(10) of emp.ename%type;  ename_table ename_table_type:=ename_table_type('1','2');begin  dbms_output.put_line(ename_table.count);  --2  ename_table.extend(3);    ename_table(3):=null;  dbms_output.put_line(ename_table.count); --5  dbms_output.put_line(nvl(ename_table(3),'1')); --1end;


3.limit 对于varray数组,返回集合变量最大个数,而对嵌套表和索引表是没有个数限制的,返回null

declare   type ename_table_type is varray(10) of emp.ename%type;  ename_table ename_table_type:=ename_table_type('1','2');begin  dbms_output.put_line(ename_table.limit);  --10end;


4.first 返回集合元素下标排序后的第一个下标
  last 返回集合元素下标排序后的最后一个下标

declare   type ename_table_type is varray(10) of emp.ename%type;  ename_table ename_table_type:=ename_table_type('2','1');begin  ename_table.extend(3);   dbms_output.put_line(ename_table.first);  --1  dbms_output.put_line(ename_table.last);   --5end;


 

--对于索引表,第一个元素下标是指标按元素下标排序后的第一个元素下标declare   type ename_table_type is table of emp.ename%type index by varchar2(10);  --varchar2需要定义长度  ename_table ename_table_type;begin  ename_table('b'):='c';  ename_table('a'):='a';  dbms_output.put_line(ename_table.first);  --a  dbms_output.put_line(ename_table.last);   --bend;


5.prior 返回当前集合元素的前一个元素下标(没有时返回null)
  next  返回当前集合元素的后一个元素下标(没有时返回null)

declare   type ename_table_type is table of emp.ename%type index by varchar2(10);  --varchar2需要定义长度  ename_table ename_table_type;begin  ename_table('b'):='b';  ename_table('a'):='a';  ename_table('c'):='c';  ename_table('d'):='d';  dbms_output.put_line(ename_table.prior('c'));  --b  dbms_output.put_line(ename_table.next('d'));   --nullend;


6.extend 增加元素,只对嵌套表和数组,增加数组元素的时候,不能超过数组最大个数
  extend       --增加1个元素,元素值为null
  extend(n)    --增加n个元素,元素值为null
  extend(n,i)  --增加n个元素,元素值跟第i个元素值相同

declare   type ename_table_type is varray(10) of emp.ename%type;  ename_table ename_table_type:=ename_table_type('2','1');begin  ename_table.extend(3,1);   dbms_output.put_line(ename_table(4));  --1end;


7.trim 从集合尾部删除元素,只对嵌套表和数组
  trim   从集合尾部删除一个元素
  trim(n) 从集合尾部删除n个元素

declare   type ename_table_type is varray(10) of emp.ename%type;  ename_table ename_table_type:=ename_table_type('2','1');begin  ename_table.trim;   dbms_output.put_line(ename_table(2));  --报错下标超出数量end;


8.delete 删除集合元素,只适用于索引表和嵌套表
delete  删除全部元素
delete(n) 删除第n个元素
delete(m,n) 删除从m到n之间的所有元素

declare   type ename_table_type is table of emp.ename%type index by varchar2(10);  --varchar2需要定义长度  ename_table ename_table_type;begin  ename_table('b'):='b';  ename_table('a'):='a';  ename_table('c'):='c';  ename_table('d'):='d';  ename_table.delete('f','c');  dbms_output.put_line(ename_table.count);  --4  ename_table.delete('a','c');  dbms_output.put_line(ename_table.count);  --1end;


 

原创粉丝点击