Ver Mensaje Individual
  #5 (permalink)  
Antiguo 10/05/2012, 15:31
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: lectura, actualización e inserción usado BULK COLLECT en PL/SQL

Hola gnzsoloyo

La verdad se me cruzaron un poco los cables y no quedé convencido con la respuesta que te dí.

Cuando haces uso de cursores, el cursor es un apuntador al registro. Si este cambia, es cuando se presentan los problemas relacionados con snapshot too old en caso que el cursor abierto sea muy grande. Esto aplica para toda mi respuesta del primer post.
Cuando haces uso de bulk collect, envías todo el resultado de la consulta a memoria RAM. Está operación es independiente del movimiento de la tabla, ya que por cuestiones de performance, toda la información ya se encuentra en memoria y no depende de las acciones que se presenten en la tabla.

Según esto, yo no consideraría necesario realizar UPDATE.

Quedaría unicamente así:
Código SQL:
Ver original
  1. FORALL i IN v_aplica.FIRST .. v_aplica.LAST
  2.         INSERT INTO APLICA(
  3.             AP.id, AP.numero, AP.cont, AP.n_serial, AP.c_serv, AP.u_alta, AP.f_alta, AP.u_baja,AP.f_baja)
  4.         VALUES(
  5.             app_seq.NEXTVAL, v_aplica(i).numero, v_aplica(i).cnt, v_aplica(i).n_serial,
  6.             v_aplica(i).c_serv, v_aplica(i).u_alta, SYSDATE, v_aplica(i).n_serial,SYSDATE);

Esto lo digo asumiendo que la tabla del INSERT y la tabla del UPDATE son la misma.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming