oracle复合数据类型-相关方法

oracle提供了一些内置的函数和方法来操作复合数据类型。

一、count 返回集合中的元素的个数
declare
type ename_table_type is table of varchar2(20) index by binary_integer ;
ename_table ename_table_type ;
begin
     for i in 1..5 loop
        ename_table(i):='a'||i ;
     end loop ;
     dbms_output.put_line('元素个数:'||ename_table.count) ;
     for c in 1..ename_table.count loop
        dbms_output.put_line(ename_table(c)) ;
     end loop ;
end ;

二、exists 用于确定集合元素是否存在,如果存在则返回true,否则返回false
SQL> declare
2 type ename_table_type is table of varchar2(20);
3 ename_table ename_table_type ;
4 BEGIN
5       IF ename_table.exists(1) THEN
6             ename_table(1):='scot' ;
7       ELSE
8            dbms_output.put_line('嵌套表使用前要初始化');
9       END if ;
10 end;
11 /

嵌套表使用前要初始化

PL/SQL procedure successfully completed

三、first&last first返回集合第一个元素的下标,last返回集合最后一个元素的下标。
SQL> DECLARE
2 TYPE ename_varray_type IS table OF varchar2(20) INDEX BY binary_integer;
3 ename_varray ename_varray_type ;
4 BEGIN
5       ename_varray(1):='mary' ;
6       ename_varray(4):='scott' ;
7       ename_varray(5):='tiger' ;
8       ename_varray(7):='lucy' ;
9       dbms_output.put_line('第一个元素下标:'||ename_varray.first);
10       dbms_output.put_line('最后个元素下标:'||ename_varray.last);
11 end ;
12 /

第一个元素下标:1
最后个元素下标:7

PL/SQL procedure successfully completed

四、prior&next prior返回当前元素前一个元素的下标,next返回当前元素下一下元素的下标
SQL> DECLARE
2 TYPE ename_varray_type IS table OF varchar2(20) INDEX BY binary_integer;
3 ename_varray ename_varray_type ;
4 BEGIN
5       ename_varray(1):='mary' ;
6       ename_varray(4):='scott' ;
7       ename_varray(5):='tiger' ;
8       ename_varray(7):='lucy' ;
9       dbms_output.put_line('元素5的前一个元素下标:'||ename_varray.prior(5));
10       dbms_output.put_line('元素5的后一个元素下标:'||ename_varray.next(5));
11 end ;
12 /

元素5的前一个元素下标:4
元素5的后一个元素下标:7

PL/SQL procedure successfully completed

五、delete

DECLARE
TYPE ename_varray_type IS table OF varchar2(20) INDEX BY binary_integer;
ename_varray ename_varray_type ;
BEGIN
     ename_varray(1):='mary' ;
     ename_varray(4):='scott' ;
     ename_varray(5):='tiger' ;
     ename_varray(6):='lucy' ;
     ename_varray(7):='LILI' ;
     ename_varray(8):='join' ;
     ename_varray(9):='wzj' ;
     FOR c IN 1..ename_varray.count LOOP
        IF ename_varray.exists(c) then
          dbms_output.put_line('下标为'||c||'的值为:'||ename_varray(c));
        END IF ;
     END loop ;
     ename_varray.delete(5);
     dbms_output.put_line('删除下标为5的元素之后');
     FOR c IN 1..ename_varray.count LOOP
        IF ename_varray.exists(c) then
          dbms_output.put_line('下标为'||c||'的值为:'||ename_varray(c));
        END IF ;
     END loop ;
     ename_varray.delete(8,9);
     dbms_output.put_line('删除下标为8,9的元素之后');
     FOR c IN 1..ename_varray.count LOOP
        IF ename_varray.exists(c) then
          dbms_output.put_line('下标为'||c||'的值为:'||ename_varray(c));
        END IF ;
     END loop ;
end ;
delete删除所有元素,delete(n)删除下标为n的元素,delete(m,n)删除下标元素在[m,n]中的元素。

六、extend   只用于嵌套表和变长数组,用来扩展元素个数
SQL> DECLARE
2 TYPE ename_varray_type IS varray(10) OF varchar2(20);
3 ename_varray ename_varray_type :=ename_varray_type('');
4 BEGIN
5      FOR c IN 1..9 LOOp
6          ename_varray(c):='a'||c ;
7          ename_varray.extend ;
8      END LOOP ;
9      FOR c IN 1..ename_varray.count LOOP
10         dbms_output.put_line('下标为'||c||'的元素为:'||ename_varray(c));
11      END LOOP ;
12 end ;
13 /

下标为1的元素为:a1
下标为2的元素为:a2
下标为3的元素为:a3
下标为4的元素为:a4
下标为5的元素为:a5
下标为6的元素为:a6
下标为7的元素为:a7
下标为8的元素为:a8
下标为9的元素为:a9
下标为10的元素为:

PL/SQL procedure successfully completed

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10951282/viewspace-714189/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10951282/viewspace-714189/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值