Professional Documents
Culture Documents
EN SISTEMAS COMPUTACIONALES REPORTE: PROCEDIMIENTO ALMACENADO MEJOR PROMEDIO ALUMNO: LUIS EDGAR SANTOS CRUZ NUMERO DE CONTROL: 08301279
PROCEDIMIENTO ALMACENADO MEJOR PROMEDIO 1.- Realizar un procedimiento almacenado, que de la tabla alumnos me retorne los 5 mejores promedios donde su ao de ingreso haya sido en el 2000, su especialidad sea 1 y que me muestre la Cve_Alumno, Nombre_Alumno, Anno_Ingreso, Id_Especialida y su promedio. Antes de realizar el procedimiento almacenado tenemos que realizar nuestra consulta en nuestra base de datos y que nuestra consulta se haya efectuado correctamente, entonces una vez que la consulta nos de los valores correctos posteriormente realizaremos el procedimiento almacenado. Analizaremos parte por parte lo que nos estn pidiendo de la siguiente manera: y Primero para obtener el promedio de todos los alumnos con la clave del alumno, su nombre, el ao de ingreso y que nos aparezca el promedio que tiene cada alumno haremos la siguiente consulta: Anno_Ingreso, promedio FROM
Como se puede observar en la imagen la consulta solo nos muestra la Cve_Alumno, Nombre_Alumno, Anno_Ingreso, Id_Especialidad y el promedio que fue el alias que le asignamos, de todos los alumnos.
Hemos obtenido el promedio de todos los alumnos ahora se nos pide tambin que mostremos solo a los alumnos que su ao de ingreso sea en el 2000, entonces la consulta quedara de la siguiente manera:
SELECT Cve_Alumno, Nombre_Alumno, Anno_Ingreso, Id_Especialidad, prom(Cve_Alumno) AS promedio FROM alumnos WHERE Anno_Ingreso=2000;
Como se puede observar en la imagen la consulta nos retorna solo a los alumnos que su Anno_Ingreso=2000. y Ahora lo siguiente que haremos ser que aparte que nos retorne solo a los alumnos que su Anno_Ingreso=2000, tambin nos retorne solo alumnos que su Id_Especialidad=1, entonces la consulta quedara de la siguiente manera:
SELECT Cve_Alumno, Nombre_Alumno, Anno_Ingreso, Id_Especialidad, prom(Cve_Alumno) AS promedio FROM alumnos WHERE Anno_Ingreso=2000 AND especialidad(1,Cve_Alumno);
Ya hemos obtenido casi todo lo que nos piden solo nos falta los 5 mejores promedios, para esto procederemos a realizar nuestra consulta de la siguiente manera:
SELECT Cve_Alumno, Nombre_Alumno, Anno_Ingreso, Id_Especialidad, prom(Cve_Alumno) AS mejorpromedio FROM alumnos WHERE Anno_Ingreso=2000 AND especialidad(1,Cve_Alumno) ORDER BY prom(cve_alumno) DESC LIMIT 5;
Para que la consulta nos retorne los 5 mejores promedios le agregamos ORDER BY prom(cve_alumno) DESC LIMIT 5; lo que estamos diciendo aqu es que nos ordene el promedio de manera descendente esto quiere decir de mayor a menor y con LIMIT 5 estamos diciendo que de esos promedios solo nos tome los primeros 5 valores y se observa que el alias de promedio cambio a mejorpromedio, con esta consulta hemos obtenido lo que nos piden ahora procederemos a realizar el procedimiento almacenado.
IN, indica que el parmetro es slo de entrada, OUT que es una variable de salida e INOUT que es de ambas formas, si no se especifica el modo del parmetro por defecto es de tipo IN. y Crear el Procedimiento Almacenado:
CREATE PROCEDURE mejorpromedio(IN xId_Especialidad int, yAnno_Ingreso int, OUT cve char(5), nombre char(5), mejorPromedio decimal(5,2))
Insertaremos el cuerpo ser el que har la funcin de traernos a los 5 mejores promedios:
BEGIN SELECT cve_alumno, nombre_alumno, prom(cve_alumno) AS prom FROM alumnos WHERE Id_Especialidad=xId_Especialidad AND Anno_Ingreso=yAnno_Ingreso ORDER BY prom(cve_alumno) DESC LIMIT 5; END //
y Para utilizar nuestro procedimiento almacenado escribiremos en la consola de mysql: DELIMITER // y daremos Enter.
CREATE PROCEDURE mejorprom(IN xId_Especialidad int, yAnno_Ingreso int, OUT cve char(5), nombre char(5), mejorPromedio decimal(5,2)) BEGIN SELECT cve_alumno, nombre_alumno, prom(cve_alumno) AS prom FROM alumnos WHERE Id_Especialidad=xId_Especialidad AND Anno_Ingreso=yAnno_Ingreso ORDER BY prom(cve_alumno) DESC LIMIT 5; END //
Como podremos ver en la imagen el procedimiento almacenado se ha agregado con xito, ahora probaremos nuestro procedimiento. y Para invocar nuestro procedimiento almacenado utilizaremos CALL de la siguiente manera:
CALL mejorpromedio(1,2000,@a,@b,@c); //
Las variables @a,@b,@c es donde se guardan nuestro parmetros de salida Cve_Alumno, Nombre_Alumno y prom y por lo tanto con CALL las mandamos a llamar y de esta manera finalizamos con nuestro procedimiento almacenado.