Actualizar varias tablas al mismo tiempo Oracle

publicado por: Anonymous

Intento actualizar tres tablas en Oracle, que son totalmente distintas, pero que en todas existe un campo exactamente igual “STATUS”.

El tema es que necesito que estos campos necesito que se actualicen a “NEW”.

Es por esto que me he preguntado si es posible hacer actualización de multiples tablas a la vez.

Pensé en algo como esto, sin embargo me arroja error:

UPDATE SS_WERUECK, SS_BESTELLUNGR, SS_KOMMBESTR
SET STATUS = 'NEW';

Quedo atento de antemano lo agradezco.

solución

Prueba a realizar un procedimiento:

Declare
  cursor t is select table_name from user_tables where table_name in ('tabla1','tabla2'...); -- Colocas tus tablas entre comillas simples ('') y lo aloja en un cursor
begin
  for t1 in t loop -- Recorremos nuestro cursor
      execute immediate 'update '|| t1.table_name || ' set STATUS=''NEW'''|| '  where STATUS=''Status_a_cambiar'''; -- Ejecuta el update a nuestras tablas segun nuestro cursor
  end loop;
    commit;  -- Guarda los cambios si no se tuvo error de ninguna actualización   
exception when others then -- Captura si hay error
    rollback; -- Devuelve todos los cambios realizados a las tablas
end;

Esto también es aplicable en caso de querer eliminar datos en tablas. En caso de que estas estén indexadas, habrá que eliminarlas en cascada considerando el orden de la primera tabla como el dato que primero se debe eliminar, hasta el
último que se puede eliminar una vez que no existe lugar que indexe con aquella tabla. Para dicho caso recordar cambiar “update” por “delete”.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published.