Oracle - Procedimiento Almacenado

 
Vista:

Procedimiento Almacenado

Publicado por Pedro (2 intervenciones) el 14/05/2003 17:28:31
Quiero hacer un procedimiento almacenado en Oracle que vaya pasando datos de una tabla a la otra haciendo la comprobación de que si en la tabla que se va a hacer la inserccion ya existe la clave, que borre el registro y haga entonces la inserccion. haber si me podeis echar una mano. gracias
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

RE:Procedimiento Almacenado

Publicado por Byron (300 intervenciones) el 14/05/2003 18:01:31
El procedimiento sería antes de hacer la insercion hacer un select donde filtres por la clave y si existe lo borras, esto de si existe lo capturas con las excepciones o bien con un select implicito.
Pero si me dices que siempre que quieras insertar el registro y ese registro ya esta en la tabla que lo borre, yo creo que para no perder tiempo haces directamente el delete filtrado por la clave y despues el insert, obviamente si el registro no existia en la tabla simplemente el delete no borrará nada.

Saludos.
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

RE:Procedimiento Almacenado

Publicado por Pedro (2 intervenciones) el 14/05/2003 18:13:41
Me puedes poner algun ejemplo, es que no lo entiendo muy bien
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

RE:Procedimiento Almacenado

Publicado por Byron (300 intervenciones) el 14/05/2003 19:03:56
Tabla 1 pasar datos existentes y no existentes a Tabla 2

El cursor que extrae los registros de la Tabla 1 debe traer entre sus campos la clave que insertaras en la Tabla 2, (tu me dices que si existe que borre el registro entonces asumo que tu conoces como identificar un registro en la tabla 2 mediante la clave), digamos que la clave de Tabla 2 son dos campo num_ruc e id_comprobante, seria mas o menos así:

declare
cursor curtab1 is
select ruc, comprobante.... from tabla1;
begin
for reg in curtab1 loop
delete from tabla2 where num_ruc = reg.ruc and id_comprobante=reg.comprobante;
insert into tabla2 values (reg.ruc, reg.comprobante, reg.......);
end loop;
end;

Como te digo el delete intentara siempre borrar su registro correspondiente en la tabla 2 pero no borrará nada si no existe.

Saludos
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