PLSQL Language Referenc-PL/SQL集合和记录-多维集合

多维集合

尽管集合只有一维,但可以构造一个多维集合,即一个集合的元素也是集合。

 

DECLARE  --二维可变数组(可以是锯齿形的)

    TYPE t1 IS VARRAY(10) OF INTEGER;  -- 整形动态数组

    va t1 := t1(1,2,3);

    TYPE nt1 IS VARRAY(10) OF t1;      -- 数组的数组

    nva nt1 := nt1(va, t1(4,5,6), t1(7,8), va);

    tmp INTEGER;  va1 t1;

BEGIN

    dbms_output.put_line('1');

    FOR i IN 1..nva.COUNT LOOP

        FOR j IN 1..nva(i).count LOOP

            dbms_output.put(nva(i)(j) || ', ');

        END LOOP;

        dbms_output.put_line(NULL);

    END LOOP;         

    nva.EXTEND;

    nva(5) := t1(9, 10);          -- 改变内部动态数组元素

    nva(4) := t1(11,12,13,14);    -- 改变内部动态数组元素

    nva(4)(4) := 15;                -- 14改变为15

    dbms_output.put_line('2');

    FOR i IN 1..nva.COUNT LOOP

        FOR j IN 1..nva(i).count LOOP

            dbms_output.put(nva(i)(j) || ', ');

        END LOOP;

        dbms_output.put_line(NULL);

    END LOOP; 

    nva(4).EXTEND;    -- 给第4个动态数组元素,扩展空间

    nva(4)(5) := 16;  -- 存储89   

    dbms_output.put_line('3');

    FOR i IN 1..nva.COUNT LOOP

        FOR j IN 1..nva(i).count LOOP

            dbms_output.put(nva(i)(j) || ', ');

        END LOOP;

        dbms_output.put_line(NULL);

    END LOOP; 

END;

--嵌套表的嵌套表

DECLARE

    TYPE tb1 IS TABLE OF VARCHAR2(20);  -- 字符串嵌套表

    vtb1 tb1 := tb1('AAAA', 'BBBB');

    TYPE ntb1 IS TABLE OF tb1; -- 嵌套表,它的元素为嵌套表

    vntb1 ntb1 := ntb1(vtb1);

    TYPE tv1 IS VARRAY(10) OF INTEGER;  -- 动态数组

    TYPE ntb2 IS TABLE OF tv1;            -- 嵌套表,元素为动态数组

    vntb2 ntb2 := ntb2(tv1(1, 2), tv1(3, 4, 5));

    str VARCHAR2(20);

    v_tb_tmp tb1;

BEGIN

    dbms_output.put_line('输出vntb1');

    FOR i IN 1..vntb1.count LOOP

        FOR j IN 1..vntb1(i).count LOOP

            dbms_output.put(vntb1(i)(j) || ', ');

        END LOOP;

        dbms_output.put_line(NULL);

    END LOOP;   

    dbms_output.put_line('输出vntb2');

    FOR i IN 1..vntb2.count LOOP

        FOR j IN 1..vntb2(i).count LOOP

            dbms_output.put(vntb2(i)(j) || ', ');

        END LOOP;

        dbms_output.put_line(NULL);

    END LOOP;   

    vntb1.EXTEND;

    vntb1(2) := vntb1(1);

    vntb1.DELETE(1);     -- 删除vntb1的第1个元素

    vntb1(2).DELETE(1);  -- 删除vnt1的第2个元素中的第1个字符串   

    dbms_output.put_line('输出vntb1');

    dbms_output.put_line(vntb1(2)(2));

END;

--关联数组的关联数组

DECLARE

    TYPE AssociateArray IS TABLE OF INTEGER INDEX BY PLS_INTEGER;  -- 关联数组

    v4 AssociateArray;

    v5 AssociateArray;

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

转载于:http://blog.itpub.net/17013648/viewspace-1107992/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值