Tienes un problema sencillo:
1. Si trabajas cursores en ciclos REPEAT con un flag de sobre un HANDLER, una de dos: O defines un flag para cada REPEAT si están anidados, o bien reinicias el FLAG si son secuenciales.
El problema se da en que cuando completó el primer ciclo el flag vale 1 (uno), y cuando se inicia el segundo REPEAT como entra valiendo 1, solamente ejecuta la primera secuencia y sale.
2. Crear un cursos para que haga
no tiene ningun sentido, porque hubiera dado lo mismo que pusieras directamente la sentencia. A fin de cuentas, lo invocas una sola vez.
3. Es bastante posible (no me puse a hacer un análisis detallado) que una importante parte de este procedimiento se pudiese realizar sin cursores. Si se preparan las consultas de modo que hagan un volcado de los datos a tablas temporales, la actualización, los borrados o inserciones se pueden realizar en forma masiva, y no secuenciales, como está planteado.
Luego me fijo con más detalle.
Respecto de los triggers, no conozco forma de desactivarlos, solamente eliminándolos.