以下のMAP_A_B_Cの表には、たとえば9,000,000件のレコードがあります。バルク収集を使用する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の値を返します。テーブルに挿入すると、CLIENT_IDとCLIENT_MAPPEDを指定し、テーブルMAP_A_B_Cの列A、B、Cの値をターゲットとします。その組み合わせが存在しない場合、そのクライアントはさらに処理されず、スキップされ、次の反復に進む。
注 - 結合を使用するには連結( '|')を使用し、連結文字列からターゲット値を検索するにはsubstr()を使用しました。ただし、コレクション/型またはネストした表を使用する方が良い方法があれば、参考になります。たとえば、rec_type(i).existsをチェックすると、ソース値のインデックス付き列が1対1のターゲットに返されます.3X3行列を作成してその存在を確認できるかどうかが私の意図です。
お手数をおかけします。マップテーブルに存在するすべてのクライアントを取得するには