Duda con Cursor en Oracle
Publicado por tipitipi (30 intervenciones) el 16/10/2008 22:32:18
Hola a todos:
Tengo el siguiente problema:
Dentro de un procedimiento, declaro un cursor. Lo abro y con FETCH NEXT lo recorro.
El problema es que se con certeza que cuando abro el cursor, se introducen en él 13 filas, y el bucle me da 14 pasadas. Una mas de las filas que el cursor tiene, por lo que tengo que ingeniarmelas para que el resultado sea el esperado.
Curiosamente la última pasada es la que repite siempre dos veces.
Adjunto el codigo para ver si alguien me puede ayudar:
---------------------------------------------------------------------------------------------------
DECLARE
--Declaramos el Cursor y la Variable en donde almacenaremos los datos
CURSOR C_Datos IS SELECT DNI FROM TP.L09_VISU_GENERAL GROUP BY DNI ORDER BY DNI asc;
Aux_Datos C_Datos%ROWTYPE;
BEGIN
--Borramos los Datos Contenidos en la Tabla de resultados
DELETE FROM L09_VISU_GENERAL_AUX;
LOOP
FETCH C_Datos INTO Aux_Datos;
. . . . INSTRUCCIONES . . . .
EXIT WHEN C_Datos %NOTFOUND;
END LOOP;
--Cerramos el Cursor de DNI's obtenidos
CLOSE C_Datos;
--Realizar Commit en la Tabla
COMMIT;
END;
---------------------------------------------------------------------------------------------------
Muchas Gracias y Saludos !!
Tengo el siguiente problema:
Dentro de un procedimiento, declaro un cursor. Lo abro y con FETCH NEXT lo recorro.
El problema es que se con certeza que cuando abro el cursor, se introducen en él 13 filas, y el bucle me da 14 pasadas. Una mas de las filas que el cursor tiene, por lo que tengo que ingeniarmelas para que el resultado sea el esperado.
Curiosamente la última pasada es la que repite siempre dos veces.
Adjunto el codigo para ver si alguien me puede ayudar:
---------------------------------------------------------------------------------------------------
DECLARE
--Declaramos el Cursor y la Variable en donde almacenaremos los datos
CURSOR C_Datos IS SELECT DNI FROM TP.L09_VISU_GENERAL GROUP BY DNI ORDER BY DNI asc;
Aux_Datos C_Datos%ROWTYPE;
BEGIN
--Borramos los Datos Contenidos en la Tabla de resultados
DELETE FROM L09_VISU_GENERAL_AUX;
LOOP
FETCH C_Datos INTO Aux_Datos;
. . . . INSTRUCCIONES . . . .
EXIT WHEN C_Datos %NOTFOUND;
END LOOP;
--Cerramos el Cursor de DNI's obtenidos
CLOSE C_Datos;
--Realizar Commit en la Tabla
COMMIT;
END;
---------------------------------------------------------------------------------------------------
Muchas Gracias y Saludos !!
Valora esta pregunta


0