I am a beginner in the ORACLE PL/SQL Programming arena, and this is the first time i am working with collections. This is my requirement. I have defined two objects with required columns from two tables, now while looping through picking record by record, i have to check many conditions , once i am done verifying all the scenarios i have to update the first table records with the closest match from the second table. This is how it looks
DECLARE
TYPE OBJ1 AS OBJECT(
COLUMN1,
COLUMN2,
COLUMN3,
COLUMN4,
COLUMN5,
COLUMN6
);
TYPE OBJ2 AS OBJECT(
COLUMNA,
COLUMNB,
COLUMNC,
COLUMND,
COLUMNE,
COLUMNF);
TYPE TAB1 AS TABLE(OBJ1);
TYPE TAB2 AS TABLE(OBJ2);
X TAB1;
Y TAB2;
VARRAY1 AS VARRAY(10) OF NUMBER;
VARRAY2 AS VARRAY(10) OF VARCHAR2(30);
VARRAY3 AS VARRAY(10) OF VARCHAR2(30);
VARRAY4 AS VARRAY(10) OF NUMBER;
CPTY VARRAY1=NEW VARRAY1();
LGL VARRAY2=NEW VARRAY2();
BUS VARRAY3=NEW VARRAY3();
MSTR VARRAY4=NEW VARRAY4();
FOR I IN TAB1.FIRST..TAB1.LAST
LOOP
FOR J IN TAB2.FIRST..TAB2.LAST
LOOP
IF (TAB1(I).COLUMN1=TAB2(J).COLUMN1 AND TAB1(I).COLUMN2=TAB2(J).COLUMN AND
TAB1(I).COLUMN3=TAB2(J).COLUMN3) THEN
CPTY(0) :=TAB2(J).COLUMN1;
LGL(0) :=TAB2(J).COLUMN2;
BUS(0) :=TAB2(J).COLUMN3;
MSTR(0) :=TAB2(J).COLUMN4;
ELSIF (TAB1(I).COLUMN1=TAB2(J).COLUMN1 AND TAB1(I).COLUMN2=TAB2(J).COLUMN2
AND TAB1(I).COLUMN3!=TAB2(J).COLUMN3) THEN
CPTY(1) :=TAB2(J).COLUMN1;
LGL(1) :=TAB2(J).COLUMN2;
BUS(1) :=TAB2(J).COLUMN3;
MSTR(1) :=TAB2(J).COLUMN4;
MSTR(4) :=TAB2(J).COLUMN4;
ELSIF
-------------
I wnt to set values for other indexes
END IF;
END LOOP;
IF (CPTY(0) IS NOT NULL AND LGL(0) IS NOT NUL AND BUS(0) IS NOT NULL AND
MSTR(0) IS NOT NULL) THEN
TAB1(I).COLUMN1 :=CPTY(0);
TAB1(I).COLUMN2 :=LGL(0);
TAB1(I).COLUMN3 :=BUS(0);
TAB1(I).COLUMN4 :=MSTR(0);
ELSIF (CPTY(0) IS NOT NULL AND LGL(0) IS NOT NUL AND BUS(0) IS NOT NULL AND
MSTR(0) IS NOT NULL) THEN
TAB1(I).COLUMN1 :=CPTY(1);
TAB1(I).COLUMN2 :=LGL(1);
TAB1(I).COLUMN3 :=BUS(1);
TAB1(I).COLUMN4 :=MSTR(1);
--AND SO ON, I NEED TO SET PRIORITY THIS WAY
END IF;
END LOOP;
I wanted to initialize using index and retrieve using index just like how we do in java,but that is not happening, i am not able to set value using index,I have searched, but i couldn't find any example of this sort. Please do let me know if this is possible, else anyother way how this can be achieved. If this is a repitive question,please excuse me. I couldnt find an exact match.
Thanks