You are on page 1of 7

CTEDRA: BASES DE DATOS DISTRIBUIDAS 19:00-20:00 K-53 CATEDRTICO: MIGUEL PEREZ VASCONCELOS CARRERA: ING.

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

SELECT Cve_Alumno, Nombre_Alumno, Id_Especialidad, prom(Cve_Alumno) AS alumnos;

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.

Ya tenemos nuestra consulta lista, ahora realizaremos el Procedimiento Almacenado.

La sintaxis general para crear el procedimiento almacenado es la siguiente:


CREATE PROCEDURE nombre_del_procedimiento ([parmetros[,...]]) [characteristic ...] cuerpo

Esta es la sintaxis para especificar los parmetros:


[ IN | OUT | INOUT ] nombre_parametro tipo_dato

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:

Le pondremos un nombre al procedimiento y especificaremos los parmetros:

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.

Luego insertaremos el procedimiento almacenado:

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.

You might also like