I have a solution that works using for loops but this method is inefficient and performing poorly. I'm new to using collections and can't find my answer on the internet yet. Can anyone point me in the right direction? This is a simplified version of what I'm trying to achieve.
DECLARE
TYPE rec_numbers IS RECORD
(
DIGIT NUMBER,
ENGLISH VARCHAR2 (10),
FRENCH VARCHAR2(10),
ITALIAN VARCHAR2(10)
);
TYPE tab_numbers IS TABLE OF rec_numbers;
blk_num tab_numbers;
blk_num2 tab_numbers;
BEGIN
SELECT 1 DIGIT, 'ONE' ENGLISH, NULL FRENCH, NULL ITALIAN
BULK COLLECT INTO blk_num
FROM DUAL;
SELECT 1 DIGIT, NULL ENGLISH, 'UN' FRENCH, 'UNO' ITALIAN
BULK COLLECT INTO blk_num2
FROM DUAL;
FOR i IN blk_num.FIRST .. blk_num.LAST LOOP
FOR j IN blk_num2.FIRST .. blk_num2.LAST LOOP
IF blk_num(i).digit = blk_num2(j).digit THEN
blk_num(i).french := blk_num2(j).french;
blk_num(i).italian := blk_num2(j).italian;
END IF;
END LOOP;
END LOOP;
END;