El siguiente script se empleó para modificar el contador de un rango de facturas centralizadas, referente al ticket https://gloval.freshservice.com/helpdesk/tickets/2345 y únicamente está de base para realizar esta reasignación masiva (para un rango determinado se quería cambiar la terminación 20 por 19)


Para casos semejantes, el script sirve únicamente para un rango de facturas y habría que verificar siempre que sólo se van a actualizar las facturas que se necesitan (no perder de vista que la búsqueda por rango es sobre un campo tipo cadena y podría no funcionar como se espera.


 

 

 

set SERVEROUTPUT on

DECLARE 
sDesde varchar2 (20) := [primer elemento del rango];
sHasta varchar2 (20) := [último elemento del rango];

BEGIN

--FACLIBRE
UPDATE FACLIBRE SET NUMFAC = substr(numfac, 0,length(numfac) - 2) || '19' where NUMFAC >= sDesde and NUMFAC <= sHasta ;
DBMS_OUTPUT.PUT_LINE('Registros de FACLIBRE.NUMFAC ' || TO_CHAR(SQL%ROWCOUNT));
UPDATE FACLIBRE SET NUMALBG = substr(NUMALBG, 0,length(NUMALBG) - 2) || '19' where NUMALBG >=sDesde and NUMALBG<= sHasta;
DBMS_OUTPUT.PUT_LINE('Registros de FACLIBRE.NUMALBG ' || TO_CHAR(SQL%ROWCOUNT));
UPDATE FACLIBRE SET RNUMALBG = substr(RNUMALBG, 0,length(RNUMALBG) - 2) || '19' where RNUMALBG >=sDesde and RNUMALBG<= sHasta;
DBMS_OUTPUT.PUT_LINE('Registros de FACLIBRE.RNUMALBG ' || TO_CHAR(SQL%ROWCOUNT));

--GLOBALFAC
UPDATE GLOBALFAC SET FACGLOB = substr(FACGLOB, 0,length(FACGLOB) - 2) || '19' where FACGLOB >= sDesde AND FACGLOB<= sHasta;
DBMS_OUTPUT.PUT_LINE('Registros de GLOBALFAC.FACGLOB ' || TO_CHAR(SQL%ROWCOUNT));


--PRODUCCION
UPDATE PRODUCCION SET NUMFAC = substr(NUMFAC, 0,length(NUMFAC) - 2) || '19' where NUMFAC >= sDesde and NUMFAC<= sHasta;
DBMS_OUTPUT.PUT_LINE('Registros de PRODUCCION.NUMFAC ' || TO_CHAR(SQL%ROWCOUNT));
UPDATE PRODUCCION SET NUMFACG = substr(NUMFACG, 0,length(NUMFACG) - 2) || '19' where NUMFACG >= sDesde and NUMFACG<= sHasta;
DBMS_OUTPUT.PUT_LINE('Registros de PRODUCCION.NUMFACG ' || TO_CHAR(SQL%ROWCOUNT));
UPDATE PRODUCCION SET RNUMFACG = substr(RNUMFACG, 0,length(RNUMFACG) - 2) || '19' where RNUMFACG >= sDesde and RNUMFACG<= sHasta;
DBMS_OUTPUT.PUT_LINE('Registros de PRODUCCION.RNUMFACG ' || TO_CHAR(SQL%ROWCOUNT));

-- Descomentar COMMIT
 ROLLBACK;
--  COMMIT;
 
    DBMS_OUTPUT.put_line('Ejecutado con éxito');

EXCEPTION
    WHEN OTHERS THEN
        ROLLBACK;
        
        dbms_output.put_line('Hecho rollback' );
        DBMS_OUTPUT.put_line('Error:'||TO_CHAR(SQLCODE));
        DBMS_OUTPUT.put_line(SQLERRM);
END;