0

我是 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 中所做的那样,但这没有发生,我无法使用索引设置值,我已经搜索过,但我找不到任何此类示例。请让我知道这是否可能,否则如何实现。如果这是一个重复的问题,请原谅。我找不到完全匹配的。

谢谢

4

0 回答 0