Práctica PL/SQL RA.
Bases de datos
Sobre la base de datos de universidad (cargar el nuevo script ya que he cambiado datos) realiza los
siguientes ejercicios:
(3 puntos) 1. Realiza una función que reciba como parámetro un identificador, un identificador de curso
académico. Y devuelva el número de créditos en los que se ha matriculado dicho alumno en ese curso.
Se deberá controlar:
• Si el identificador no existe se devolverá un mensaje de error “Identificador no existente”
• Si el identificador del curso no existe devolverá un mensaje de error “Identificador de curso no
existe”
• Si el identificador corresponde a un profesor se devolverá un mensaje de error “El identificador
corresponde a un profesor”
Debes usar para lanzar los errores:
signal SQLSTATE '45000'
SET MESSAGE_TEXT = 'mensaje';
Para que el ejercicio sea evaluado deberá ejecutar las instrucciones necesarias para probarlo para cada
una de las opciones de los resultados que pueda devolver.
(4 puntos) 2. Desarrollar un procedimiento almacenado en MySQL que utilice un cursor para recorrer a
los alumnos matriculados en un curso específico ( que pasaremos por parámetro) y determine si son
elegibles para recibir una beca académica según su rendimiento.
Debes crear una tabla llamada Becas que almacene la información de los alumnos que reciben becas. La
estructura de la tabla debe ser la siguiente:
id_alumno, id_curso, total_creditos, porcentaje_beca, beca
• Si el promedio de calificaciones es mayor o igual a 90 se le asignara el 75% de las becas.
• Si el promedio de calificaciones esta entre 80 y 90 se le asignará el 50% de la becas.
• Si el promedio es menor que 80% no recibirá beca.
Si un alumno cumple con los criterios, insertar un nuevo registro en la tabla Becas.
La cuantía de la beca se calculará como:
Beca = Total de Créditos *20 *(Porcentaje de la beca / 100)
Realiza una llamada al procedimiento y comprueba que la tabla beca esta rellena y los datos sean válidos.
3. (3 puntos) Se va a realizar un control de plazas en las asignaturas.
Para ello cada vez que se matricula un alumno en una asignatura se deberá comprobar que no supera el
límite de matriculas de la asignatura.
Si el número de alumnos matriculados en una asignatura supera plazasMaximas, se lanza un error con
SIGNAL SQLSTATE '45000'.
Añade un campo plazasMaximas a la tabla asignatura.
Modifica ese campo para que todas tengan 5 plazas como máxima, ya que en la base de datos tenemos
pocos alumnos y es una universidad muy exclusiva (para poder probar fácilmente el trigger)
Realiza un trigger para que haga la comprobación al realizar un insert en la tabla
alumno_se_matricula_asignatura.
Realiza la prueba de que verdaderamente funciona. Elije un curso y una asignatura y matricula a varios
alumnos hasta que se alcance el límite.
Todos los ejercicios deben contener comentarios aclaratorios donde se explique para que hacéis
las instrucciones. Si no tienen estos comentarios el ejercicio será penalizado.
Todos los ejercicios tienen que tener las sentencias que habéis usado para probarlo. Si no están
las sentencias de prueba el ejercicio será penalizado.