You are on page 1of 14

1

INDICE

Introduccin -------------------------------------------------------------------- 2

Objetivo General --------------------------------------------------------------- 3

Marco Terico ------------------------------------------------------------------ 3

Procedimientos Almacenados (Procedure Store) ------------------------- 3

Actuadores(Trigger) ------------------------------------------------------ 7

Funciones(Function) ------------------------------------------------------ 10

CONCLUSION ---------------------------------------------------------------- 13

BIBLIOGRAFIA ------------------------------------------------------------- 14
2

INTRODUCCION

Desde que el hombre comenz a utilizar medios digitales para almacenar su informacin

Comenz a enfrentarse con problemas para hacer ms prctico este proceso, es lgico pensar

Que desde la utilizacin de los archivos ( que son los antecesores de las bases de datos) se les

fueron integrando algunas mejoras hasta llegar a la concepcin que actualmente se tienen de

base de datos, al paso del tiempo las empresas de la industria de software en especial la

relacionada con las bases de datos incorporaron mecanismos hasta llegar paulatinamente a

incorporar, los procedimientos almacenados.

Cubrir las diferentes necesidades de los usuarios de un DBMS debe de ser la filosofa a

seguir de la industria de las bases de datos y este comentario es seguro que no pas

desapercibido por los desarrolladores ya que la totalidad de las bases de datos estn haciendo

o hicieron esfuerzos por incorporar los procedimientos almacenados a su software. Y se

menciona de esta manera porque en realidad en estos tiempos en los que gran parte de la

informacin del mundo se encuentra alojada en BD.

La tendencia de las bases de datos actualmente va encaminada a darle ms conocimiento a

las bases de datos que a la aplicacin, esto quiere decir que el cliente est enterado lo menos

posible de la estructura lgica de la DB, o al menos esto muestra la clara incorporacin de

algunos elementos como la integridad referencial, actualizacin y eliminacin en cascada,

disparadores, UDFS y ahora procedimientos almacenados, los cuales realizan labores que

antes eran propias de las aplicaciones cliente.

Los procedimientos almacenados son una herramienta que todo desarrollador debe tener en

cuenta siempre, ya que proporcionan un rendimiento en trminos de velocidad e incrementan

la seguridad en su sistema de base de datos, es por ello que su empleo en los diferentes

proyectos incrementa la calidad del desarrollo de software.


3

OBJETIVOS

Aprender y usar procedimientos almacenados para tareas comunes en sistemas

Gestionar correctamente procedimientos almacenados

MARCO TEORICO

Qu son los Procedimientos Almacenados (Procedure Store)?

(Carlos, 2015)
Un procedimiento es un subprograma que ejecuta una accin especfica y que no devuelve

ningn valor. Un procedimiento tiene un nombre, un conjunto de parmetros (opcional) y un

bloque de cdigo

Su implementacin vara de un gestor de bases de datos a otro. Este programa est hecho

con un lenguaje propio de cada Gestor de BD y esta compilado, por lo que la velocidad de

ejecucin es muy rpida.

La sintaxis de un procedimiento almacenado es la siguiente:

CREATE PROCEDURE nombre (parmetro)


[caractersticas] definicin
Puede haber ms de un parmetro (se separan con comas) o puede no haber ninguno
(en este caso deben seguir presentes los parntesis, aunque no haya nada dentro).
Debemos especificar el tipo de datos de cada parmetro. Al especificar el tipo de dato
del parmetro no debemos especificar la longitud del tipo
Los parmetros tienen la siguiente estructura: modo nombre tipo.
Donde:
modo: es opcional y puede ser IN (el valor por defecto, son los parmetros que el
procedimiento recibir), OUT (son los parmetros que el procedimiento podr
modificar) INOUT (mezcla de los dos anteriores).
nombre: es el nombre del parmetro.
tipo: es cualquier tipo de dato de los provistos por MySQL.
definicin: Es el cuerpo del procedimiento y est compuesto por el procedimiento en
s: aqu se define qu hace, cmo lo hace y bajo qu circunstancias lo hace.
4

Ejemplo de Procedimiento Almacenados

Para realizar nuestros ejemplos de los Procedimiento almacenado haremos uso de una base

de datos de una Aerolnea con las siguientes entidades que se muestra en la siguiente imagen

Realizar un Procedimiento almacenado que me permita conocer los datos de los


funcionarios de la Aerolnea, pasndole al procedimiento almacenado el cargo que
ocupan en la Aerolnea.

El Procedimiento Almacenado quedara As:

DELIMITER //
CREATE PROCEDURE ConsultaFuncionarios (IN dato Varchar(45))
BEGIN
SELECT p.nombres,p.apellidos,p.nacionalidad FROM persona p,cargos
c,funcionarios f
WHERE f.idPersona = p.idPersona and
f.idCargos = c.idCargos and
c.descripcionCargo = dato;
END//

Una vez creado y compilado el procedimiento almacenado podemos ejecutarlo.

Para ello debemos hacer uso de la palabra reservada CALL, que nos permitir llamar

algn procemiento almacenado en nuestra base de dato, en este caso llamaremos al


5

procedimiento que habamos creado: ConsultaFuncionarios tambin debemos agregarle el

parmetro de entrada que habamos definido.

CALL ConsultaFuncionarios(PILOTO);

Una vez Ejecutado nos muestra las personas que ejercen el cargo de piloto en la Aerolnea

Ahora realizamos la consulta de las personas que son AZAFATAS;

CALL ConsultaFuncionarios(AZAFATA);

El Procedimiento Almacenado quedara As:

Realizar un Procedimiento Almacenado que permita ingresar registros en la tabla de


Marca siempre y cuando ese registro no est repetido,

El Procedimiento Almacenado quedara As:

DELIMITER //
CREATE PROCEDURE insertarMarca (IN _descripcionMarca VARCHAR(45), OUT
_repuesta VARCHAR(45))
BEGIN
SET @contador = 0;
SELECT COUNT(*) INTO @contador FROM marca m
WHERE m.descripcionMarca = _descripcionMarca;

IF @contador = 0 THEN
INSERT INTO marca(descripcionMarca) VALUES(_descripcionMarca);
SET _repuesta='Registro Creado';
ELSE
SET _repuesta ='Marca ya Existe';
END IF;
END
//
DELIMITER $$
6

Porque es importante el uso del DELIMITER: por defecto mysql usa como DELIMITER el
punto y coma (;) , es decir, cada vez que encuentre punto y como(;) ejecuta hasta ah, debido a
que los procedimientos y funciones son varias lneas de cdigos y algunas de ellas terminan
con este delimiter se ejecutara solo hasta ah, lo que ocasionara un error, es por esto que se
hace necesario indicarle a mysql que utilice otro DELIMITER que puede ser cualquiera para
el ejemplo usamos $$ y al finalizar la creacin del procedimiento o funcin volvemos a
cambiarlo por ;

Para realizar la prueba del procedimiento, podemos


ver que en nuestra tabla contamos con los siguientes
registros

SET @_repuesta = 0;
CALL insertarMarca('INTERCONTINENTAL',@_repuesta);
SELECT @_repuesta

Ventajas

Acceso ms rpido a los datos.


mayor velocidad de respuesta.
Mejor manejo de la paquetera etc.

Desventajas

Se corrompe la base de datos y se pueden perder hasta los respaldos.


7

Usos

Los usos 'tpicos' de los procedimientos almacenados se aplican en la validacin de datos,


integrados dentro de la estructura del banco de datos.

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 operaciones 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 ejecutar algunos procedimientos
almacenados.

Disparadores (Triggers).

(Sicilia, creativecommons, 2008) El soporte para disparadores se incluy a partir de

MySQL 5.0.2. Actualmente, el soporte para disparadores es bsico, por lo tanto, hay ciertas

limitaciones en lo que puede hacerse con ellos.

Un disparador es un objeto de base de datos con nombre que se asocia a una tabla, y se

activa cuando ocurre un evento en particular para la tabla. Algunos usos para los disparadores

es verificar valores a ser insertados o llevar a cabo clculos sobre valores involucrados en una

actualizacin.

Un disparador se asocia con una tabla y se define para que se active al ocurrir una

sentencia INSERT, DELETE, o UPDATE sobre dicha tabla. Puede tambin establecerse que

se active antes o despus de la sentencia en cuestin. Por ejemplo, se puede tener un

disparador que se active antes de que un registro sea borrado, o despus de que sea

actualizado.
8

TRIGGER EN MySQL

Los triggers tienen dos palabras clave, OLD y NEW que se refieren a los valores que tienen

las columnas antes y despus de la modificacin. Los INSERT permiten NEW, los DELETE

slo OLD y los UPDATE ambas.

Sintaxis necesaria para crear un trigger


CREATE TRIGGER <nombre>
{BEFORE|AFTER}
{INSERT|UPDATE|DELETE}
ON
<tablename>
FOR EACH ROW
BEGIN
<sentenciasSQL>
END;

Tabla de Insercin del trigger.

Ejemplo:
Realizar un trigger que me permita almacenar almacenar en una tabla independiente el
idPasajero, idVuelo y la fecha de Insercin despus de cada registro ingresado en la tabla
pasajes.
El trigger quedara As:

CREATE TRIGGER Pasajes_AI AFTER INSERT ON Pasajes FOR EACH ROW


INSERT INTO VentaPasajes(idPasajero,idVuelo,insertado)
VALUES(NEW.idPasajeros,NEW.idVuelos,NOW ());

El trigger actuara despus de cada registro que se llegue a realizar en la tabla Pasajes

INSERT INTO Pasajes(idPasajeros,idVuelos,hora,numeroPuesto)


VALUES(2,3,'09:12:00',1);
9

Despus de haber realizado una insercin, podemos verificar que el trigger a ingresado en
una tabla independiente los registros que habamos definido que guarde.

Realizar un trigger que me permita guardar en una tabla independiente los registro

antes de actualizar la tabla de ruta.

El Trigger quedara As

CREATE TRIGGER ActualizaRuta_BU BEFORE UPDATE ON ruta FOR EACH


ROW
INSERT INTO Historial (origen, destino, costoAnterior, costoNuevo, usuario,
fechaModificacion)
VALUES(OLD.origen,OLD.destino,OLD.costo,New.costo,CURRENT_USER(),NOW());

El trigger actuara Antes de cada actualizacin de cada registro que se llegue a realizar en
la tabla Ruta

Registro de la Tabla de Ruta UPDATE ruta SET costo= 1000 WHERE idRuta=3;

Tabla Historial
10

Ventajas:

Ofrece chequeos de seguridad basada en valores.


Restricciones dinmicas de integridad de datos y de integridad referencial.
Asegura que las operaciones relacionadas se realizan juntas de forma implcita.
Respuesta inmediata ante un evento auditado.
Ofrece mayor control sobre la BD.

Desventajas

Hay que definir con anticipacin la tarea que realizara trigger.


Peligro de prdida en realizaciones.
Nunca se llama directamente.
Solo se pueden aplicar a una tabla especifica, es decir, un trigger no sirve para dos o
ms tablas.

MODOS DE EMPLEO:

Registrar, auditar y monitorear la actividad de cambios de datos.


Validad datos, cambiando o negando acciones como insert, update, delete en una
tabla.
Preservar la consistencia y claridad de los datos ejecutando acciones relacionadas con
otras tablas.

FUNCIONES (FUNCTION)

(TechOnTheNet, 2009) Una funcin almacenada es un programa almacenado de tipo

especial que devuelve un valor nico. Utiliza las funciones almacenadas para encapsular

frmulas comunes o reglas empresariales que se pueden reutilizar entre sentencias SQL o

programas almacenados.

Las funciones almacenadas de MySQL proporcionan una manera poderosa y flexible de

manipular y procesar datos. Puede definir y ejecutar funciones almacenadas en cualquier

servidor que utilice MySQL.


11

Sintaxis de funciones almacenadas en MySQL

CREATE FUNCTION function_name [ (parameter datatype [, parameter datatype]) ]

RETURNS return_tipodato

BEGIN

declaracion_section

ejecutable_section

END;

Nombre funcin

El nombre a asignar a esta funcin en MySQL.

parmetro

Uno o ms parmetros pasaron a la funcin. Cuando se crea una funcin, se considera que

todos los parmetros son parmetros IN (no parmetros OUT o INOUT) donde los parmetros

pueden ser referenciados por la funcin pero no pueden ser sobrescritos por la funcin.

Return_datatype

El tipo de datos del valor de retorno de la funcin.

Declaracin_seccin

El lugar en la funcin donde se declaran variables locales.

Seccin ejecutable

El lugar en la funcin donde se introduce el cdigo para la funcin.


12

- Realizar una Funcin que me calcule el valor total de acuerdo el nmero de


pasaje de venta por el costo de la ruta o viaje

La funcin quedara as:

La funcin recibir 2 parmetros el primero nos permitir definir el nmero de pasajes que

un cliente haya comprado y el segundo ser para definir la ruta y as poder averiguar el costo

de la ruta para poder calcular el costo total.

En la tabla de Ruta se cuenta con las

siguientes rutas con sus respectivos

costos

SELECT calcularPasajeTotal(2,1) AS Venta; SELECT calcularPasajeTotal(4,3) AS Venta;

Para que Sirven?


Las funciones permiten automatizar tareas. Esto permite eliminar cdigo repetitivo en los
programas.

. Ejemplo: Necesitamos que nuestros programas realicen un clculo concreto.

Creamos una funcin que realice dicho clculo y utilizamos la funcin las veces que sea
necesario en nuestro programa
13

CONCLUSION

Con los Ejercicios antes realizados, se ha podido notar la manera de encapsular sentencias

SQL para realizar operaciones frecuentes en sistemas de informacin y su utilidad que ello

conlleva.

Como resultado y Conclusin de esta investigacin podemos decir que usar un

procedimiento almacenado resulta en un cdigo ser ms limpio, tener mayor rapidez y eficacia

en resultados Esto es especialmente til cuando es imposible mediante una sentencia SQL el

rescatar toda la informacin que el usuario requiere, como por ejemplo en una factura del

servicio telefnico que est sujeta a promociones, tipos de cliente, tipos de llamadas,

localidades, horarios pico y no pico etc., para lo cual es necesario consultar varias tablas .
14

Bibliografas

Carlos, L. C. (15 de Oct de 2015). SCRIB. Obtenido de SCRIB:

https://es.scribd.com/doc/68914782/Procedimiento-Almacenado

TechOnTheNet. (2009). TechOnTheNet.com. Obtenido de TechOnTheNet.com:

https://www.techonthenet.com/mysql/functions.php

Miguel-Angel Sicilia(Dec 8, 2008)Creativecommons Obtenido de


Creativecommons

http://creativecommons.org/licenses/by/2.0/