Está en la página 1de 29

PROCEDIMIENTOS ALMACENADOS

Taller de base de datos


PROCEDIMIENTOS ALMACENADOS
Un Stored Procedure o Procedimiento Almacenado
es un programa (o funcin) que se almacena
fsicamente en una base de datos. La
implementacin de un stored procedure vara de un
gestor de bases de datos a otro.

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:

CREATE PROCEDURE miProcedimiento (IN vEdad


INTEGER)
BEGIN
SELECT * from User where edad > vEdad;
END

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:

CREATE FUNCTION consulta(id1 int)


RETURNS TABLE(name1 CHARACTER VARYING(30), carrera1 INT) AS
$$
BEGIN
RETURN QUERY SELECT name,carrera FROM alumno
WHERE id = id1;
END;
$$ LANGUAGE plpgsql;

Llamada del procedimiento:


SELECT consulta(3); 10

SELECT * FROM consulta(3);


PROCEDIMIENTOS ALMACENADOS
PRACTICA 2.
Elaborar un procedimiento almacenado que
inserte datos de la tabla artculos.

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).

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.

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.

Crear los triggers utilizando la tabla de eventos


y los procedimientos de 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:

CREATE TRIGGER actualizacion


AFTER UPDATE ON articulos
FOR EACH STATEMENT
EXECUTE PROCEDURE eventos1( );

27
TRIGGERS (DISPARADORES)
EJEMPLO:

CREATE TRIGGER insercion


AFTER INSERT ON articulos
FOR EACH STATEMENT
EXECUTE PROCEDURE eventos2();

28
TRIGGERS (DISPARADORES)
EJEMPLO:

CREATE TRIGGER eliminacion


AFTER DELETE ON articulos
FOR EACH STATEMENT
EXECUTE PROCEDURE eventos3();

29

También podría gustarte