Práctica 7: Procedimientos Almacenados
Práctica 7: Procedimientos Almacenados
Práctica 7: Procedimientos Almacenados
SUBTEMA:
PROCEDIMIENTOS ALMACENADOS
El estudiante consultar evaluar las ventajas y aplicacin del lenguaje procedural en el DBMS
2.- MARCO TEORICO Un procedimiento almacenado es un conjunto de comandos SQL que pueden almacenarse en el servidor. Una vez que se hace, los clientes no necesitan relanzar los comandos individuales pero pueden en su lugar referirse al procedimiento almacenado. Algunas situaciones en que los procedimientos almacenados pueden ser particularmente tiles: Cuando mltiples aplicaciones cliente se escriben en distintos lenguajes o funcionan en distintas plataformas, pero necesitan realizar la misma operacin en la base de datos. Cuando la seguridad es muy importante. Los bancos, por ejemplo, usan procedimientos almacenados para todas las oparaciones comunes. Esto proporciona un entorno seguro y consistente, y los procedimientos pueden asegurar que cada operacin se loguea apropiadamente. En tal entorno, las aplicaciones y los usuarios no obtendran ningn acceso directo a las tablas de la base de datos, slo pueden ejectuar algunos procedimientos almacenados.
Los procedimientos almacenados pueden mejorar el rendimiento ya que se necesita enviar menos informacin entre el servidor y el cliente. El intercambio que hay es que aumenta la carga del servidor de la base de datos ya que la mayora del trabajo se realiza en la parte del servidor y no en el cliente. Considere esto si muchas mquinas cliente (como servidores Web) se sirven a slo uno o pocos servidores de bases de datos. Los procedimientos almacenados le permiten tener bibliotecas o funciones en el servidor de base de datos. Esta caracterstica es compartida por los lenguajes de programacin modernos que permiten este diseo interno, por ejemplo, usando clases. Usando estas caractersticas del lenguaje de programacin cliente es beneficioso para el programador incluso fuera del entorno de la base de datos.
3.- MATERIAL, EQUIPO O REACTIVO 7. Server2Go en USB 8. Servidor de MySql 4.- PROCEDIMIENTO 7. Tener mnimo 300 MB libres en la USB Cargue el archivo Server2Go de la USB. Para cargar el servidor portable. o Se mostrar la pgina Server2Go Selfconfigurating WAMP Stack, revise la pgina completa para cerciorarse que no hay ningn problema con la carga del servidor. Busque el smbolo del sistema y seleccinelo Cambi a la unidad de la USB y entre al directorio Server2Go\Server\MySql\Bin Una vez en este directorio escriba mysql u root p y presione enter. 1. Crear un sistema de Base de Datos que tendr dos tablas, una con ventas y la otra con comisiones. En la primera se almacenarn cada venta que se realiza en un Nombres del equipo Juan Carlos Garca Mndez Rubn Prez Lara Fanny Snchez de la Cruz
comercio, y en la segunda las comisiones que le corresponden a cada vendedor en el momento. CREATE TABLE ventas ( `vendedor` int(11), `producto` int(11), `importe` float ) CREATE TABLE comisiones ( `vendedor` int(11), `comision` float ) Las comisiones se calculan de una forma especial, le corresponde un porcentaje de las ventas segn el tipo de producto, y es importante para los vendedores el que se sepa en cada momento qu comisiones lleva ganadas 2. Para calcular qu comisin le corresponde a un vendedor, calcularemos los porcentajes para cada tipo de producto vendido y luego lo aadiremos/actualizaremos en la tabla de comisiones. Todo se realizar en un procedimiento almacenado DELIMITER $$ DROP PROCEDURE IF EXISTS `test`.`sp_comisiones`$$ CREATE PROCEDURE `test`.`sp_comisiones` (IN mivendedor INT) BEGIN DECLARE micomision INT DEFAULT 0; DECLARE suma INT; DECLARE existe BOOL; select IFNULL(sum(importe),0) into suma from ventas where producto = 1 and vendedor = mivendedor; SET micomision = micomision + (suma * 0.15); select IFNULL(sum(importe),0) into suma from ventas where producto = 2 and vendedor = mivendedor; SET micomision = micomision + (suma * 0.1); select IFNULL(sum(importe),0) into suma from ventas where producto = 3 and vendedor = mivendedor; SET micomision = micomision + (suma * 0.2); select count(1)>0 into existe from comisiones where vendedor = mivendedor; if existe then UPDATE comisiones set comision = comision+micomision where vendedor = mivendedor; else insert into comisiones (vendedor, comision) values (mivendedor, micomision); end if; END$$ DELIMITER ; a) Inserte 5 tuplas en la tabla ventas b) Verifique las tablas tiene en su base de datos c) Muestre los datos de todas las tablas, d) Haga una llamada al procedimiento creado anteriormente e) Visualice nuevamente la informacin de todas las tablas Nombres del equipo Juan Carlos Garca Mndez Rubn Prez Lara Fanny Snchez de la Cruz
6. ACTIVIDADES, DATOS Y RESULTADOS Ir realizando cada uno de las actividades anteriores e ir capturando las pantallas del servidor cada que realice una instruccin, mostrando los datos resultantes.
***Procedimiento***
Nombres del equipo Juan Carlos Garca Mndez Rubn Prez Lara Fanny Snchez de la Cruz
f)
En esta prctica tuvimos la oportunidad de poner en prctica los conocimientos tericos que aprendimos en clases pasadas, sobre procedimientos. La tabla de comisiones se actualizo con el parmetro que metimos cuando llamamos al Nombres del equipo Juan Carlos Garca Mndez Rubn Prez Lara Fanny Snchez de la Cruz
procedimiento. Como pudimos ver en las diferentes etapas de este ejercicio, los procedimientos tienen una sintaxis y funcin especial en las bases de datos. Debemos practicar ms sobre su uso. g) Toda la informacin ser guardada en su USB.
8.- BIBLIOGRAFA Silberschatz, Abraham. Fundamentos de Base de Datos. Ed. Mc Graw Hill. http://www.mysql.com www.server2go.com MySql con clase http://www.conclase.net
Nombres del equipo Juan Carlos Garca Mndez Rubn Prez Lara Fanny Snchez de la Cruz