私は ORACLE PL/SQL プログラミング分野の初心者で、コレクションを扱うのはこれが初めてです。これが私の要件です。2 つのテーブルから必要な列を持つ 2 つのオブジェクトを定義しました。レコードごとにピッキングをループしながら、多くの条件をチェックする必要があります。 2番目のテーブル。見た目はこんな感じ
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で行うのと同じように、インデックスを使用して初期化し、インデックスを使用して取得したかったのですが、それは起こっていません。インデックスを使用して値を設定できません。検索しましたが、この種の例は見つかりませんでした。これが可能かどうか、それ以外の方法でこれを達成する方法を教えてください。これが繰り返しの質問である場合は、ご容赦ください。完全に一致するものを見つけることができませんでした。
ありがとう