今天在开发过程中,需要为数据库增添数据,为了让数据分散,且测试的时候更加全面真实,我们通常会考虑各种情况,单一的数据是不能满足需求的,将可能出现的情况全部记录在二维数组中,再通过在插入数据的时候,取数组中的值即可。
这里的二维数组其实也是通过自己定义得来的,是基于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. 拆分
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. 最后取相同行号的数据就可以了。