Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Procedimientos Almacenados
Procedimientos Almacenados
2
PROCEDIMIENTOS ALMACENADOS
Los procedimientos almacenados son un mtodo
para encapsular tareas repetitivas. Admiten
variables declaradas por el usuario, ejecucin
condicional y otras caractersticas de programacin
muy eficaces.
3
PROCEDIMIENTOS ALMACENADOS
Implementacin
Se usan a menudo para realizar consultas SQL,
insertar, actualizar o eliminar registros sobre los
objetos de la base de datos de una manera
transparente, desde el punto de vista del cliente de
la aplicacin. Un Stored Procedure, permite
agrupar en forma exclusiva parte de una tarea
especfica que se desee realizar o mejor dicho el
SQL apropiado para dicha accin.
Son implementados desde la aplicacin mediante
CALL procedure ().
4
PROCEDIMIENTOS ALMACENADOS
El procesamiento de un procedimiento almacenado
conlleva crearlo y ejecutarlo la primera vez.
Cuando se crea un procedimiento almacenado, las
instrucciones que hay en l se analizan para ver si
son correctas desde el punto de vista sintctico.
Si se detecta un error de sintaxis, se devuelve un
error y no se crea el procedimiento almacenado.
5
PROCEDIMIENTOS ALMACENADOS
VENTAJAS
Seguridad: Es mucho mejor usar Stored procedure por
seguridad. Los procedimientos almacenados facilitan algunas
tareas de administracin de seguridad y asignacin de
permisos. Por ejemplo, se puede conceder permiso a un
usuario para ejecutar un determinado procedimiento
almacenado, aunque el usuario no disponga de los permisos
necesarios sobre los objetos afectados por las acciones
individuales de dicho procedimiento.
Centralizacin de la definicin: al formar parte de la base de
datos los procedimientos almacenados estn en un lugar
centralizado y pueden ser ejecutados por cualquier aplicacin
que tenga acceso a la misma.
6
PROCEDIMIENTOS ALMACENADOS
VENTAJAS
Reduccin del trfico de red: una sentencia formada por
decenas, cientos o incluso miles de lneas de cdigo SQL
puede escribirse como un procedimiento almacenado en el
servidor y ejecutarse simplemente mediante el nombre de
dicho procedimiento, en lugar de enviar todas las lneas de
cdigo por la red desde el cliente hasta el servidor (esta
reduccin del trfico de red ser especialmente significativa
en redes no muy veloces, como por ejemplo, algunas redes
WAN).
Encapsulamiento: los procedimientos almacenados
encapsulan gran parte de la lgica del negocio a las
aplicaciones que los utilizan. Por ejemplo, una aplicacin
puede llamar al procedimiento almacenado sin conocer cmo 7
funciona internamente este proceso.
PROCEDIMIENTOS ALMACENADOS
EJEMPLO EN SQL SERVER:
CALL miProcedimiento(20);
8
PROCEDIMIENTOS ALMACENADOS
PRACTICA 1.
Elaborar un procedimiento almacenado que
consulte los datos de la tabla artculos contenida
en la base de datos de tienda.
9
PROCEDIMIENTOS ALMACENADOS
EJEMPLO EN POSTGRESQL:
11
PROCEDIMIENTOS ALMACENADOS
CREATE FUNCTION agregar(id1 INT, name1 TEXT, carrera1 INT)
RETURNS VOID AS
$BODY$
BEGIN
INSERT INTO alumno VALUES(id1,name1,carrera1);
RETURN;
END;
$BODY$
LANGUAGE plpgsql;
12
PROCEDIMIENTOS ALMACENADOS
PRACTICA 3.
Elaborar un procedimiento almacenado que
actualice datos de la tabla artculos.
13
PROCEDIMIENTOS ALMACENADOS
CREATE FUNCTION actualizar(id1 INT) RETURNS VOID AS
$$
BEGIN
UPDATE alumno SET name='Juan' WHERE id = id1;
RETURN;
END;
$$
LANGUAGE plpgsql;
14
PROCEDIMIENTOS ALMACENADOS
PRACTICA 4.
Elaborar un procedimiento almacenado que
elimine datos de la tabla artculos.
15
PROCEDIMIENTOS ALMACENADOS
CREATE FUNCTION borrar(id1 INT) RETURNS VOID AS
$BODY$
BEGIN
DELETE FROM alumno WHERE id=id1;
RETURN;
END;
$BODY$
LANGUAGE plpgsql;
16
TRIGGERS
(DISPARADORES)
Taller de base de datos
TRIGGERS (DISPARADORES)
Un Trigger es una porcin de cdigo que se
dispara al ocurrir un evento, es decir que se
ejecuta cuando se cumple una condicin
establecida al realizar una operacin de insercin
(INSERT), actualizacin (UPDATE) o borrado
(DELETE).
Son usados para mejorar la administracin de la
Base de datos, sin necesidad de contar con el
usuario para que ejecute una sentencia de SQL.
Adems, pueden generar valores de columnas,
prevenir errores de datos, sincronizar tablas,
modificar valores de una vista, etc. 18
TRIGGERS (DISPARADORES)
Permiten implementar programas basados en
paradigma lgico (sistemas expertos,
deduccin).
19
TRIGGERS (DISPARADORES)
Permiten implementar programas basados en
paradigma lgico (sistemas expertos, deduccin).
Suelen ser implementados para realizar tareas
relacionadas con cambios en las tablas; como
auditoras, bsqueda de lmites de los valores, o
establecimiento de valores por omisin en
columnas.
20
TRIGGERS (DISPARADORES)
Para crear un trigger se usa la sentencia CREATE
TRIGGER, junto a clusulas que le indican cuando
activarse y que hacer cuando se active.
Si por alguna razn, quisiramos que el trigger no
se ejecute ms, debemos eliminarlo. Para eliminar
un trigger, se utiliza la sentencia DROP TRIGGER
indicndole el nombre del trigger a borrar;
DROP TRIGGER set_date;
21
TRIGGERS (DISPARADORES)
SINTAXIS:
CREATE TRIGGER nombre_trigger
[AFTER|BEFORE]
[INSERT | UPDATE | DELETE]
ON nombre_tabla
FOR EACH [ROW | STATEMENT]
EXECUTE PROCEDURE nombre_funcion;
22
TRIGGERS (DISPARADORES)
Crear una tabla de eventos en la base de datos
con los campos id(int), transaccin(char varying
30), fecha(timestamp), usuario(char varying 20).
Crear las funciones de los triggers.
23
TRIGGERS (DISPARADORES)
CREATE OR REPLACE FUNCTION eventos1()
RETURNS TRIGGER AS
$BODY$
DECLARE
r eventos%rowtype;
BEGIN
INSERT INTO eventos
VALUES(1,actualizacion,now(),current_user);
RETURN r;
END;
24
$BODY$
LANGUAGE 'plpgsql;
TRIGGERS (DISPARADORES)
CREATE OR REPLACE FUNCTION eventos2()
RETURNS TRIGGER AS
$BODY$
DECLARE
r eventos%rowtype;
BEGIN
INSERT INTO eventos
VALUES(2,insercion,now(),current_user);
RETURN r;
END;
25
$BODY$
LANGUAGE 'plpgsql;
TRIGGERS (DISPARADORES)
CREATE OR REPLACE FUNCTION eventos3()
RETURNS TRIGGER AS
$BODY$
DECLARE
r eventos%rowtype;
BEGIN
INSERT INTO eventos
VALUES(3,eliminacion,now(),current_user);
RETURN r;
END;
26
$BODY$
LANGUAGE 'plpgsql;
TRIGGERS (DISPARADORES)
EJEMPLO:
27
TRIGGERS (DISPARADORES)
EJEMPLO:
28
TRIGGERS (DISPARADORES)
EJEMPLO:
29