Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Es correcto este procedimiento?

Estas en el tema de Es correcto este procedimiento? en el foro de PostgreSQL en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 31/03/2011, 06:16
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Es correcto este procedimiento?

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.

Etiquetas: correcto, procedimiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:08.