[ Foro de SQL (y MySQL) ]

trigger procedimiento almacenado

13-Dec-2020 21:31
Invitado (AYUDA A NOVATO)
1 Respuestas

Hola buenas, estoy empezando en el mundo de la programación y oracle SQL se me complica un poco jejeje.
Tengo un par de dudas estando haciendo unos ejercicios me encontre un par que se me atascan =(
El primero el mas sencillo, montar un trigger:
Tengo que montar un trigger que muestre por consola cuantos alumnos tengo en cada curso al modificar o alterar la tabla de alumnos.
Las tablas son dos una de cursos y otra de alumnos muy sencillas. Bien mi codigo quedo asi:

CREATE OR REPLACE TRIGGER mostrarcuros ON ALUMNOS
AFTER INSERT OR UPDATE AS
DECLARE CURSOR
Total_alumnos IS SELECT numero_alumno,count(*) as total
FROM ALUMNOS
group by Nombre_alumno;
a_nombre ALUMNOS.nombre;
BEGIN
FOR ALUMNOS in Total_alumnos LOOP
SELECT numero_alumno,count(*) as total from ALUMNOS
end loop;
end;
Podrian explicarme que tengo mal y porque creo que me lie un poco con el mysql =(

La otra es un procedimiento almacenado que permita introducir datos de un alumno donde es necesario controlar que no exista clave duplicada;

CREATE PROCEDURE entrar_alumno(nombre ALUMNOS.nombre,numero_alumno ALUMNOS.numero_alumno,curso ALUMNOS.curso,fecha ALUMNOS.fecha_inscripcion)
IS
BEGIN
SELECT COUNT(numero_alumno) INTO entrar_alumno
FROM ALUMNOS
WHERE UPPER(NUMERO_ALUMNO)=UPPER(numero_alumno);
IF (ALUMNOS.numero_alumno=entrar_alumno.numero_alumno)THEN
DBMS_OUTPUT.PUT_LINE('clave duplicada');
END IF;


Y me lo crea pero me sale un error de comando no terminado apropiadamente y (Encountered the symbol "end-of-file"....
Muchas gracias por la ayuda de antemano =)


14-Dec-2020 08:48
Nacho Cabanes (+73)

Tienes un END IF para el IF, pero te falta otro END para el BEGIN






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...