Oracle - Reutilizar un cursor

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 8 puestos en Oracle (en relación al último mes)
Gráfica de Oracle

Reutilizar un cursor

Publicado por Alexis (2 intervenciones) el 25/05/2020 23:07:10
Buenas, estoy iniciando en el tema de cursor con plsql en oracle.

Tengo una consulta, ¿como puedo abrir y cerrar un cursor mas de una vez en un procedure?

Necesito recorrer x veces los resultados de un cursor, pues a la tabla que apunta se va actualizando.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
DECLARE
 
  contador integer;
 
  CURSOR afam
   IS
   select * from DATOS_AFAM where rownum < 2000 and updateado is null;
 
 
BEGIN
 
 LOOP
 
 
//ABRIR CURSOR PARA TRAER DATA ACTUALIZADA Y RECORRERLA.
 
                for x in afam loop
 
 
                          update DATOS_AFAM ea set updateado = 'Y' where x.rut_c=ea.rut_c and
                           x.rut_d=ea.r;
 
 
                          if contador = 50 then
 
                          contador := 0;
                          commit;
 
                          end if;
 
                   contador:=contador+1;
 
          end loop;
 
 
// CERRAR CURSOR
//SALIR DEL CICLO SI NO EXTRAIGO DATA DEL CURSOR
 
END LOOP;
 
 
END;


Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Elvis
Val: 209
Plata
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Reutilizar un cursor

Publicado por Elvis (102 intervenciones) el 26/05/2020 18:52:23
Bueno en si esto te puede causar un bloque de registros, lo que te recomiendo que crees otro cursor con el mismo select y actualizar el dato que necesitas en base al sagundo cursor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar