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