私は2つのカーソルc11とc2を持っています。私は2つのテーブルcompare1とcompare2を持っています。私はc1の結果をc2のカーソルに渡したい。 user_tab_columnsからテーブルのカラム名を取得しています。私は列名を渡して、compare1とcompare2のテーブルの間で一意のレコードの違いを取得したい。しかし、c1の列名はc2に渡されません。私が試したコードを見つけてください。あなたに最初のカーソルから列名を渡しているので、事前にc1.Thanksに値を渡すことであるカーソルから別のカーソルのステートメントを選択するために列名を渡す
DECLARE
COL VARCHAR2 (200);
OUTRECORD VARCHAR2 (200);
CURSOR c1 IS
SELECT COLUMN_NAME
FROM all_tab_columns
WHERE table_name = 'COMPARE1';
CURSOR c2(col varchar(200)) IS--col is the column names from c1
(SELECT DISTINCT COL
FROM COMPARE1
MINUS
SELECT DISTINCT COL
FROM COMPARE2);
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO COL;
DBMS_OUTPUT.put_line (COL);
OPEN c2(col);--col Is not passing to 2nd cursor
LOOP
FETCH c2 INTO OUTRECORD;--outrecord is empty is col is not passed to 2nd cursor
INSERT INTO RESULT
VALUES ('B001',
'COMPARE',
'2018',
COL,
OUTRECORD,--empy value
'NOT PRESENT IN 2017');
COMMIT;
END LOOP;
CLOSE c2;
END LOOP;
CLOSE c1;
END;
ヘルプ私は
これはどのRDBMSですか? MySQL、PostgreSQL、Oracle、SQL Server、IBM DB2などを使用しているかどうかにかかわらず、多くの場合違いがあります。あなたの質問に関連タグを追加してください! –
私たちはOracleを使用しています – mano