在表格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矩陣並檢查存在。
非常感謝您的幫助。