• Viernes 19 de Abril de 2024, 12:38

Autor Tema:  Es correcto el procedimiento?  (Leído 1315 veces)

soyupe

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Es correcto el procedimiento?
« en: Lunes 4 de Abril de 2011, 13:01 »
0
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.