[ 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 (+84)

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






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)