集合常用方法和过程

集合常用方法
方法: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')); --1
end;


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);  --10
end;


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);   --5
end;


 

--对于索引表,第一个元素下标是指标按元素下标排序后的第一个元素下标
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);   --b
end;


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'));   --null
end;


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));  --1
end;


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);  --1
end;


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值