28/06/2011, 05:53
|
| | Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 17 años, 6 meses Puntos: 43 | |
Respuesta: Cursor tarda mucho en ejecutarse Si te manejas con tablas PL, prueba esto, es muy rápido.
--
-- CARGAMOS LOS DATOS EN MEMORIA
--
select *
bulk collect
into MI_TABLA_PL
from MI_TABLA_NORMAL;
--
-- INSERTAMOS EN TABLA_DESTINO
--
FORALL i IN 1..MI_TABLA_PL.COUNT SAVE EXCEPTIONS
INSERT INTO TABLA_DESTINO MI_TABLA_PL(i);
El SAVE EXCEPTIONS indica que si hay algun error siga insertando y se guarde los registros "malos" por si los quieres tratar :
EJEMPLO ( Parece complicado, pero es muy sencillito )
errores := SQL%BULK_EXCEPTIONS.COUNT;
FOR i IN 1 .. errores
LOOP
ORAERR := SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE) ;
iteracion := SQL%BULK_EXCEPTIONS(i).ERROR_INDEX ;
insert into TABLA_ERRORES values MI_TABLA_PL(iteracion);
END LOOP; |