Procedimientos almacenados

download Procedimientos almacenados

of 29

Transcript of Procedimientos almacenados

PROCEDIMIENTOS ALMACENADOSTaller 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 ALMACENADOSImplementacin 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 ALMACENADOSEl 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 ALMACENADOSVENTAJAS 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 ALMACENADOSVENTAJAS 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 funciona internamente este proceso.

7

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 ALMACENADOSPRACTICA 1. Elaborar un procedimiento almacenado que consulte los datos de la tabla artculos contenida en la base de datos de tienda.

9

PROCEDIMIENTOS ALMACENADOSEJEMPLO 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); SELECT * FROM consulta(3);10

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

11

PROCEDIMIENTOS ALMACENADOSCREATE 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 ALMACENADOSPRACTICA 3. Elaborar un procedimiento almacenado que actualice datos de la tabla artculos.

13

PROCEDIMIENTOS ALMACENADOSCREATE FUNCTION actualizar(id1 INT) RETURNS VOID AS $$ BEGIN UPDATE alumno SET name='Juan' WHERE id = id1; RETURN; END; $$ LANGUAGE plpgsql;

14

PROCEDIMIENTOS ALMACENADOSPRACTICA 4. Elaborar un procedimiento almacenado que elimine datos de la tabla artculos.

15

PROCEDIMIENTOS ALMACENADOSCREATE 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; $BODY$ LANGUAGE 'plpgsql;

24

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; $BODY$ LANGUAGE 'plpgsql;

25

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; $BODY$ LANGUAGE 'plpgsql;

26

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