【入门】plsql中各种集合方法的使用(1)

介绍extend,count,limit,first,last,exists方法的使用

declare
	type t_array is varray(10) of number; --可变长数组类型,最大长度为10
    type t_nesttab is table of number;--嵌套表,最大长度没有限制
    type t_indextab is table of number index by binary_integer;--索引表,最大长度没有限制
    
    v_array t_array := t_array();--声明可变长数组变量,并用构造函数初始化
    v_nesttab t_nesttab := t_nesttab();--声明嵌套表类型的变量,并用构造函数初始化
    v_indextab t_indextab;--声明索引表类型的变量,使用前,没有必要进行初始化

begin
    dbms_output.put_line('----------extend方法使用----------');
	--extend方法使用
    v_array.extend; --往数组最后添加一个NULL元素,使用方法1
    v_array(1) := 1;--添加一个元素后,对这个元素进行赋值,索引从1开始
    dbms_output.put_line(v_array(1));
    
    v_array.extend(2);--往数组最后添加2个NULL元素,使用方法2
    v_array(2) := 2;
    v_array(3) := 3;
    dbms_output.put_line(v_array(2));
    dbms_output.put_line(v_array(3));
    
    v_array.extend(2,1);--添加第一个元素的2份副本
    dbms_output.put_line(v_array(4));
    dbms_output.put_line(v_array(5));
    
    v_nesttab.extend;--往数组最后添加一个NULL元素
    v_nesttab(1) := 1;--添加一个元素后,对这个元素进行赋值,索引从1开始
    dbms_output.put_line(v_nesttab(1));
    
    v_nesttab.extend(2);--往数组最后添加2个NULL元素
    v_nesttab(2) := 2;
    v_nesttab(3) := 3;
    dbms_output.put_line(v_nesttab(2));
    dbms_output.put_line(v_nesttab(3));
    
    v_nesttab.extend(2,1);--添加第一个元素的2份副本
    dbms_output.put_line(v_nesttab(4));
    dbms_output.put_line(v_nesttab(5));
    
    --v_indextab.extend;--索引表没有extend这个函数,直接给对应下标赋值就行
    --应为它是以键值对存储数据的。
    for i in 1..5 loop
    	v_indextab(i) := i;
    	dbms_output.put_line(v_indextab(i));
    end loop;
    
    dbms_output.put_line('----------count方法使用----------');
    --count方法使用 集合里已经存储的元素个数
    dbms_output.put_line('v_array:' || v_array.count);
    dbms_output.put_line('v_nesttab:' || v_nesttab.count);
    dbms_output.put_line('v_indextab:' || v_indextab.count);
    
	dbms_output.put_line('----------LIMIT方法使用----------');
    --count方法使用 集合里已经存储的元素个数
    dbms_output.put_line('v_array:' || v_array.LIMIT);--返回10
    dbms_output.put_line('v_nesttab:' || v_nesttab.LIMIT);--上限没有限制,故返回NULL
    dbms_output.put_line('v_indextab:' || v_indextab.LIMIT);--上限没有限制,故返回NULL
    
    dbms_output.put_line('----------FIRST,LAST方法使用----------');
    --FIRST,LAST 返回第一个元素和最后一个元素的索引
    dbms_output.put_line('v_array.FIRST:' || v_array.FIRST);
    dbms_output.put_line('v_array.LAST:' || v_array.LAST);
    
	dbms_output.put_line('v_nesttab.FIRST:' || v_nesttab.FIRST);
    dbms_output.put_line('v_nesttab.LAST:' || v_nesttab.LAST);
    
	dbms_output.put_line('v_indextab.FIRST:' || v_indextab.FIRST);
    dbms_output.put_line('v_indextab.LAST:' || v_indextab.LAST);
    
    dbms_output.put_line('----------exists方法使用----------');
    --exists方法使用 判断对应下标值是否存在
    if v_array.exists(1) then
    	dbms_output.put_line('index 1 is exists');
    end if;
    if not v_array.exists(6) then --小标6还没添加元素
    	dbms_output.put_line('index 6 is not exists');
    end if;
    v_array.extend;
    if v_array.exists(6) then --就算是NULL,也返回true
    	dbms_output.put_line('index 6 is exists');
    end if;
    
    if v_nesttab.exists(1) then
    	dbms_output.put_line('index 1 is exists');
    end if;
    if not v_nesttab.exists(6) then --小标6还没添加元素
    	dbms_output.put_line('index 6 is not exists');
    end if;
    v_nesttab.extend;
    if v_nesttab.exists(6) then --就算是NULL,也返回true
    	dbms_output.put_line('index 6 is exists');
    end if;
    
     if v_indextab.exists(1) then
    	dbms_output.put_line('index 1 is exists');
    end if;
    if not v_indextab.exists(6) then --小标6还没添加元素
    	dbms_output.put_line('index 6 is not exists');
    end if;
    v_indextab(6) := 6;
    if v_indextab.exists(6) then --添加元素后,也返回true
    	dbms_output.put_line('index 6 is exists');
    end if;
        
end;
/

转载于:https://my.oschina.net/shiwb/blog/127723

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值