jueves, 5 de marzo de 2009

Crear un script dinámico que recorra todos los dblink definidos en la base de datos

En ocasiones se hace necesario ejecutar un script en varias instancias de base de datos.
Este ejemplo, te permite hacerlo.
Debes tener privilegios de "select" sobre la tabla del diccionario "ALL_DB_LINKS" en el esquema que deseas utilizar. Las líneas "PUT_LINE", es un parche, para evitar error de "overflow", ya que le máximo disponible para despliegue son 255 caracteres por línea.


declare
cursor liga is
select '@'||db_link from all_db_links;
enlace varchar2(30);
cmd varchar2(1000);

begin

open liga;
loop
fetch liga into enlace;
exit when liga%NOTFOUND;
DBMS_OUTPUT.ENABLE (100000);
cmd := 'update pvcreditos
set saldo=0, tstamp=sysdate
where no_transa_credito in ( select no_transa_credito
from pvforma_pago'||enlace|| ' where no_transa_credito in ( select a.no_transa_credito from pvhcreditos a, pvcreditos b where a.no_fisico=b.no_fisico and a.no_transa_credito=b.no_transa_credito and a.saldo <> b.saldo and a.fecha <='||'''31-DEC-04'''||' and a.descripcion=b.descripcion and a.cajero=b.cajero))';

DBMS_OUTPUT.PUT_LINE(substr(cmd,1,255));
DBMS_OUTPUT.PUT_LINE(substr(cmd,256,400));
execute immediate cmd;
end loop;
close liga;
end;
/

No hay comentarios:

Publicar un comentario

Te agradezco tus comentarios. Te esperamos de vuelta.

Todos los Sábados a las 8:00PM

Optimismo para una vida Mejor

Optimismo para una vida Mejor
Noticias buenas que comentar