Problema con control de superposición horaria

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:

  1. Crear una temporal para registrar las comisiones que no tienen clases:
CREATE TEMP TABLE _Tcom (comision integer);
  1. 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);

  1. 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;
  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);
.....

  1. Borrar la tabla temporal o cerrar la sesion de la base y se borra automaticamente.
DROP TABLE _Tcom;