CURSOR
Hola a todos, a ver si me podeis ayudar, me mandan hacer un cursor en el que se cuente cuantos alumnos han estado mas de un curso en el colegio y segregado por ciclo.
Nos hacen crear el tipo de dato llamado cuantosalumnos -->
CREATE TYPE cuantosalumnos AS (
ciclo character(10),
cuantos integer);
Y tenemos las tablas:
docencia.modulo (codigoModulo, descripcionModulo, ciclo)
alumnado.matricula (alumno, periodo, modulo)
Y las consideraciones que nos dan es:
Que la función ha de devolver un tipo set del tipo creado.
Que tenemos que utilizar un cursor construido con un SELECT de unión de las tablas docencia.modulo y alumnado.matricula
El cursor ha de recorrer y ir contando cuantos alumnos han estado mas de un ciclo (pensar en variables que hagan de acumuladores temporales)
No se pueden hacer servir subconsultas ni GROUP BY.
Creamos la funcion con el cursor... He hecho esto, pero no se que deberia poner en el IF, alguien me puede orientar???
CREATE OR REPLACE FUNCTION docencia.ciclealumnes()
RETURNS SETOF cuantosalumnos AS $$
DECLARE
resultat cuantosalumnos;
numalumnes integer;
mimodul RECORD;
cursor1 CURSOR FOR SELECT * FROM alumnado.matricula
UNION ALL SELECT * FROM docencia.moduol WHERE modulo="codigoModul";
BEGIN
IF()THEN
END IF;
OPEN cursor1;
LOOP
FETCH cursor1 INTO mimodul;
EXIT WHEN NOT FOUND;
SELECT count(*) INTO resultat.cuantos FROM alumnado.matricula a WHERE a.alumno = mimodul."codigoAlumno" ;
RETURN NEXT resultat;
END LOOP;
CLOSE cursor1;
END;
$$ LANGUAGE plpgsql VOLATILE