Hola quería preguntar una duda sobre este ejercicio.
Tengo estas tablas:
Asignatura(codigo_asignatura, nombre, dni_responsable, area)
Estudiante(dni, nombre, año_inicio_uoc)
Cursa (dni, codigo_asignatura, semestre)
{dni} clave foranea hacia Estudiante (dni)
{codigo_estudiante} clave foranea hacia Asignatura(codigo_asignatura)
Matriculado (dni, codigo_asignatura, num_veces)
{dni} clave foranea hacia Estudiante (dni)
{codigo_estudiante} clave foranea hacia Asignatura(codigo_asignatura)
Necesitamos el listado de estudiantes que deberán pagar un recargo en la matrícula de este semestre, porque no es la primera vez que se matriculan de la misma asignatura.
¿El siguiente procedimiento es correcto? justifica tu respuesta.
CREATE TYPE tipo_estudiante_asig AS(
dni char (9),
nombre varchar(100),
codigo_asignatura varchar(50),
veces integer);
CREATE FUNCTION estudiantes_recargo (semestre_actual Cursa.semestre)
RETURNS SETOF tipos_estudiante_asig%ROWTYPE AS $$
DECLARE
estudiante_asig tipos_estudiante_asig%ROWTYPE;
BEGIN
FOR estudiante_asig IN
SELECT e.dni,e.nombre,c.codigo_asignatura,m.num_veces
FROM Estudiante e,Cursa c, Matriculado m
WHERE e.dni =c.dni AND
e.dni=m.dni AND
c.semestre = semestre_actual AND
m.num_veces >1
LOOP
RETURN NEXT estudiante_asig
END LOOP;
END;
$$LANGUAGE plpgsql;
Yo lo encuentro bien, pero creo que tiene algún error, ves algo?
Gracias y saludos.