[quote=”RCBMaps”:10088a2h]Obrigado ultilizei o FORALL éra exatamente o que eu queria.
Segue um exemplo do que eu criei.
DECLARE
CURSOR classes_1 IS
SELECT *
FROM classes;
TYPE fetch_array IS TABLE OF classes%ROWTYPE;
s_array fetch_array;
BEGIN
OPEN classes_1;
LOOP
FETCH classes_1 BULK COLLECT INTO s_array LIMIT 1000;
FORALL i IN 1..s_array.COUNT
INSERT INTO classes_bkp VALUES s_array(i);
EXIT WHEN classes_1%NOTFOUND;
END LOOP;
CLOSE classes_1;
COMMIT;
END;
[/quote]
Acho que cheguei atrasado, o problema já foi resolvido, mas mesmo assim vou registrar outra solução…
A solução é fantástica… É através de MERGE…
SQL> MERGE INTO moto2 a
2 USING moto b
3 ON (a.moto_id = b.moto_id)
4 WHEN MATCHED THEN
5 UPDATE SET a.dono = b.dono
6 WHEN NOT MATCHED THEN
7 INSERT (moto_id, moto_nome, dono)
8 VALUES (b.moto_id, b.moto_nome, b.dono);
Seguindo o artigo:
http://miltonbastos.com/2011/07/29/merge/
É justamente sincronizar 2 tabelas… Que no seu caso é a original com a de backup…
No caso da moto e moto2, se encontrar a linha nas duas tabelas, o campo dono será sincronizado, se não encontrar será inserido… Resultando no final do processo, que as 2 tabelas ficaram identicas…