Oracle 二维数组

今天在开发过程中,需要为数据库增添数据,为了让数据分散,且测试的时候更加全面真实,我们通常会考虑各种情况,单一的数据是不能满足需求的,将可能出现的情况全部记录在二维数组中,再通过在插入数据的时候,取数组中的值即可。

这里的二维数组其实也是通过自己定义得来的,是基于varray的一种数组组合。

首先定义一个数组,用来记录一种情况。

type NumArr is varray(5) of number;

通过,NumArr我们可以记录若干组数组,然后再把这若干组数组全添加到另一个数组,类型为NumArr即可。

type qArr is varray(5) of NumArr;

如下所示

declare
   type numArray is varray(4) of number;
   type numArray1 is varray(4) of numArray;
   n1 numArray;
   n2 numArray;
   n3 numArray;
   n4 numArray; 
   m1 numArray1;
begin
   n1 := numArray(1,2,3,4); 
   n2 := numArray(5,6,7,8);
   n3 := numArray(9,10,11,12);
   n4 := numArray(13,14,15,16); 
   m1 := numArray1(n1,n2,n3,n4);
   dbms_output.put_line(m1(2)(2));
end;

输出为:6

可能最近接触的python的元组十分方便,在定义的时候不会限制于某一种数据类型,但是在Oracle中尚未找到相关方法可以让一个数组中包含多个数据类型,十分遗憾。大家如果有需求,还是多写几个二维数组,然后拼在一起用吧。

思路:

1.

所有情况
A B C D E
0 null null 0 0
1 null null 0 0
1 sysdate null 0 0
1 sysdate sysdate 0 0
1 sysdate sysdate 1 0
1 sysdate sysdate 1 1

2. 拆分

number类型
A D E
0 0 0
1 0 0
1 0 0
1 0 0
1 1

0

1 1

1

日期类型
B C
null null
null null
sysdate null
sysdate sysdate
sysdate sysdate
sysdate sysdate

 4. 最后取相同行号的数据就可以了。

你可能感兴趣的:(工作总结)