尽管集合只有一维,但可以构造一个多维集合,即一个集合的元素也是集合。
|
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博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1107992/ ,如需转载,请注明出处,否则将追究法律责任。