SQL - Reprocesos PL/SQL

 
Vista:

Reprocesos PL/SQL

Publicado por berto (1 intervención) el 29/06/2006 12:19:15
Buenos dias....Mi cuestión es la siguiente:
Necesito alterar mi código PL/SQL (un paquete), para que realice reprocesos, es decir, machacar una serie de datos (registros en mi tabla), con otros nuevos,,ejemplo:
los datos que se introducen en mi tabla para un mes constan de 6 registros, pero semanalmente se van cargando estos datos y semana a semana se van actualizando entonces lo q yo hago actualmente es eliminar los registros ese mes (supongamos que ya tengo 4 regs) insertando los nuevos en este caso sería los 4 anteriores mas uno nuevo...
lo que me gustaria hacer es un proceso que recoja los datos de un mes determinado los elimine e inserte los nuevos actualizados....ejempl:

---datos actuales en tabla----
01/06/2006;paco;5000;madrid
07/06/2006;luis;4500;gerona
15/06/2006;pedro;6000;madrid
20/06/2006;manuel;1600;gerona

----datos actualizados ultima semana----
01/06/2006;paco;9000;madrid
07/06/2006;luis;1100;gerona
15/06/2006;pedro;6000;madrid
20/06/2006;manuel;1600;gerona
25/06/2006;cris;8000;teruel

el proceso constaria de un delete de los registros para ese mes en concreto puesto que es una tabla histórica y luego realizar un insert de esos datos acttualizados q tengo en otra tabla...

A ver si m podeis echar una mano
Gracias por vuestra atencion
Un saludo
-BERTO-
30/06/2006;ricard;4710;madrid
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

Reprocesos PL/SQL

Publicado por Edwin (1 intervención) el 08/07/2021 02:19:37
Hola, Supongo que por la fecha ya lo habrás resuelto pero coloco una respuesta por si alguien nuevo lo necesita.

Para esto se debe crear un procedimiento que reciba como parámetro la fecha a reprocesar.

En el código borrar la data entre esas fecha y después vuelves a insertar.

El ejemplo resuelto lo pueden encontrar en mi blog:
https://timosoft.wordpress.com/2021/07/07/reprocesar-informacion-en-oracle-pl-sql/

Pero sería algo así.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE OR REPLACE PROCEDURE REPROCESO (FECHA_INICIO DATE, FECHA_FIN DATE)
AS
 
BEGIN
 
    --BORRAR INFORMACIÓN ANTERIOR
    DELETE FROM LLAMADAS_HORA
    WHERE FECHA BETWEEN FECHA_INICIO AND FECHA_FIN;
 
    --REGISTRAR NUEVA INFORMACIÓN
    INSERT INTO LLAMADAS_DIA
    SELECT TRUNC(FECHA) FECHA, SUM(NUM_LLAMADAS) NUM_LLAMADAS
    FROM LLAMADAS_HORA
    WHERE FECHA BETWEEN FECHA_INICIO AND FECHA_FIN
    GROUP BY TRUNC(FECHA);
 
    COMMIT;
 
END;
/
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