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