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, но этого не происходит, я не могу установить значение с помощью индекса, я искал, но я не смог найти ни одного примера такого рода. Пожалуйста, дайте мне знать, если это возможно, иначе каким-либо другим способом, как это может быть достигнуто. Если это ответ на вопрос, пожалуйста, извините. Я не мог найти точное соответствие.

Спасибо

0 ответов

Другие вопросы по тегам