在表格MAP_A_B_C下面是记录例如,有900万条记录。使用批量收集的PLSQL集合
MAP_A_B_C
a_source,b_source,c_source,a_target,b_target,c_target
1001,235,5001,12,1,1
1001,235,5002,11,2,2
1001,236,6012,23,3,1
1002,235,5001,11,2,100
1002,237,5002,32,1,1
1003,239,6012,21,1,5
1003,236,6012,11,3,4
CLIENT
CLIENT_ID, A, B, C
9001,1OO1,235,5001
9002,1003,238,6012
9003,1002,235,5001
9004,1003,236,6013
现在需要什么?对于客户端,如果我首先知道表CLIENT中的a_source,b_source,c_source,我想检查MAP_A_B_C中是否存在组合,如果存在,那么分别返回a_target,b_target,c_target的值,并且返回值为a_target,b_target,c_target插入表中,让我们说CLIENT_MAPPED与CLIENT_ID以及来自表MAP_A_B_C的列A,B,C的目标值。如果组合不存在,那么它将不会进一步处理并跳过该客户端并继续下一次迭代。
注 - 我使用串联('|')来使用组合,然后使用substr()从串联字符串中查找目标值。但是,如果有更好的方法来使用集合/类型或嵌套表,这将会有所帮助。例如,当我们检查rec_type(i).exists时,它只会将源值的indexed by列返回到1到1的目标。这里我的意图是如果我们可以创建3X3矩阵并检查存在。
非常感谢您的帮助。