SQL - Procedimiento con Excepción

 
Vista:

Procedimiento con Excepción

Publicado por Señor X (1 intervención) el 23/04/2008 10:15:28
Hola! A ver si alguien me puede ayudar! Y ante todo gracias...

Estoy haciendo una práctica para clase que se trata de la gestión de una base de datos de una asociación de padres, el caso es que tengo que hacer un procedimiento almacenado que me recorra cada fila de la tabla de los alumnos y por cada una me muestre el nombre de las actividades en las que está inscrito, así como el nombre del grupo, su horario (dia y hora) y los monitores que la imparten...

El caso es que tengo este código:

create or replace procedure ALUMNO_ACTIVIDADES is
CURSOR cAlum IS
SELECT * FROM alumno;

v_nombre_act actividad.denominacion%TYPE;
v_nombre_grupo grupo.nombre%TYPE;
v_horario actividad.hora%TYPE;
v_dia actividad.dia%TYPE;
v_nombre_monitor monitor.nombre%TYPE;
v_apellidos_monitor monitor.apellidos%TYPE;

begin

FOR i IN cAlum LOOP


select ac.denominacion, ac.hora, ac.dia, g.nombre
into v_nombre_act, v_horario, v_dia, v_nombre_grupo
from actividad ac, esta_en en, grupo g
where en.pin_al = i.pin
and en.curso_al = i.curso
and en.id_grupo = g.id_grupo
and g.id_actividad = ac.id_actividad
order by ac.id_actividad;

select m.nombre, m.apellidos
into v_nombre_monitor, v_apellidos_monitor
from esta_en e, grupo gr, monitor m, monitorea mo
where i.pin = e.pin_al
and i.curso = e.curso_al
and e.id_grupo = mo.id_grupo
and mo.codigo_empleado = m.codigo_empleado
order by m.codigo_empleado;


dbms_output.put_line('***** Alumno: ' || i.nombre || ' ' ||
i.apellidos);

dbms_output.put_line('Actividad' || ': ' || v_nombre_act || ' ' ||
v_nombre_grupo || ' ' || v_dia || ' ' ||
v_horario);
dbms_output.put_line(v_nombre_monitor || ' ' || v_apellidos_monitor);
dbms_output.put_line(' ');
END LOOP;

end ALUMNO_ACTIVIDADES;

Y cuando lo pruebo me da la siguiente excepción:

ORA-01422: La recuperación exacta devuelve un número mayor de filas que el solicitado.

Según he leído se refiere a que en las consultas cojo más de una fila de cada vez pero no lo entiendo, porque la consulta, a parte, en una SQL window funciona perfectamente!

Gracias :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder