CREATE OR ALTER PROCEDURE CONDICIONALES_SP(
    E_NRO_ALUMNO INTEGER,
    E_NRO_PLAN INTEGER,
    E_CURSO INTEGER)
RETURNS (
    CURSO INTEGER,
    CANTIDAD INTEGER,
    TOTAL_MATERIAS INTEGER)
AS
BEGIN
  FOR
    SELECT
        CONDICIONALES_DETALLE_SP.CURSO,
        COUNT(*) AS CANTIDAD,
        (SELECT
            COUNT(*)
          FROM MATERIAS
          WHERE
            MATERIAS.NRO_PLAN = :E_NRO_PLAN AND
            MATERIAS.CURSO = CONDICIONALES_DETALLE_SP.CURSO AND
            NOT MATERIAS.ACTIVA AND
            NOT MATERIAS.ANALITICO) AS TOTAL_MATERIAS
    FROM CONDICIONALES_DETALLE_SP(:E_NRO_ALUMNO, :E_NRO_PLAN)
    WHERE
      CONDICIONALES_DETALLE_SP.CURSO < :E_CURSO
    GROUP BY
      CONDICIONALES_DETALLE_SP.CURSO
    INTO
      :CURSO,
      :CANTIDAD,
      :TOTAL_MATERIAS
    DO SUSPEND;
END