Я новичок в PL / SQL и извлекаю огромное количество записей из разных таблиц и хочу вставить в одну таблицу в PL / SQL, используя анонимный блок с BULK COLLECT и FORALL.Может ли кто-нибудь помочь мне решить, является ли следующий код правильным.Я сослался на множество ссылок
http://uksanjay.blogspot.com/2012/08/difference-between-bulk-collect-and.html?m=1
Как использовать массовый сбор и вставку в Pl / SQl
Есть две таблицы ABC'и' BCD ', из которого записи выбираются и вставляются в таблицу назначения' DEF '
ABC-таблица (A, B, C ARE COLUMN NAMES)
A B C
1 X Z1
2 Y Z2
BCD TABLE
A B C
1 X Z1
2 Y Z2
В таблицу назначения 'DEF' мне нужно вставить обе записи таблицы.
код выглядит следующим образом:
DECLARE
TYPE FETCH_ARRAY IS TABLE OF A_CUR%ROWTYPE;
A_ARRAY FETCH_ARRAY;
CURSOR A_CUR IS
SELECT * FROM ABC
UNION ALL
SELECT * FROM BCD;
BEGIN
OPEN A_CUR;
LOOP
FETCH A_CUR BULK COLLECT INTO A_ARRAY LIMIT 1000;
FORALL i IN 1..A_ARRAY.COUNT
INSERT INTO DEF VALUES A_ARRAY(i);
EXIT WHEN A_CUR%NOTFOUND
END LOOP;
CLOSE A_CUR;
COMMIT;
END;
PS: операторы выбора являются более сложными в реальном коде, а исходные таблицы «ABC» и «DEF» состоят из миллионов записей.Так что помогите мне написать эффективный код.