Es correcto, la copia de comisiones de un periodo lectivo anterior no genera las clases (registros en la tabla sga_calendcursada) de las bandas horarias que se crean en cada comision generada (tabla sga_asign_clases).
Deberías hacer lo siguiente:
- Crear una temporal para registrar las comisiones que no tienen clases:
CREATE TEMP TABLE _Tcom (comision integer);
- Llenar la temporal con las comisiones a las que no se le creo clases (agrega los filtros que sean necesarios):
INSERT INTO _Tcom (comision)
SELECT comision FROM sga_comisiones
WHERE anio_academico = 2018
AND periodo_lectivo = '.......'
AND NOT EXISTS (SELECT 1 FROM sga_calendcursada as a WHERE a.comision = sga_comisiones.comision);
- Armar el sql para que cree las clases de las comisiones que no tienen clases creadas:
SELECT 'EXECUTE PROCEDURE sp_crearcalendcurs (' || comision || ');' FROM _Tcom ORDER BY 1;
- Ejecutar la consulta anterior y sacar las sentencias a ejecutar y correrlas para que genere las clases.
Por ejemplo quedará algo asi:
EXECUTE PROCEDURE sp_crearcalendcurs(345);
EXECUTE PROCEDURE sp_crearcalendcurs(350);
EXECUTE PROCEDURE sp_crearcalendcurs(351);
EXECUTE PROCEDURE sp_crearcalendcurs(352);
EXECUTE PROCEDURE sp_crearcalendcurs(368);
.....
- Borrar la tabla temporal o cerrar la sesion de la base y se borra automaticamente.
DROP TABLE _Tcom;