Oracle коллекции /PL/SQL программирование
Я новичок в области программирования ORACLE PL/SQL, и я впервые работаю с коллекциями. Это мое требование. Я определил два объекта с необходимыми столбцами из двух таблиц, и теперь, просматривая выборку записи по записи, я должен проверить множество условий, как только я закончу проверку всех сценариев, мне нужно обновить записи первой таблицы с ближайшим соответствием из Второй стол Вот так это выглядит
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;
Я хотел инициализировать с помощью индекса и получать с использованием индекса так же, как мы делаем в Java, но этого не происходит, я не могу установить значение с помощью индекса, я искал, но я не смог найти ни одного примера такого рода. Пожалуйста, дайте мне знать, если это возможно, иначе каким-либо другим способом, как это может быть достигнуто. Если это ответ на вопрос, пожалуйста, извините. Я не мог найти точное соответствие.
Спасибо