procedimientos almacenados

12
Instituto Tecnológico de Las Américas StoredProcedures (SP) Bases de Datos Avanzadas Prof. Quinta Ana Pérez Luis José Rodríguez (2009-0529)

Upload: iluijo

Post on 08-Jul-2015

5.194 views

Category:

Technology


0 download

DESCRIPTION

Esta es mi presentación sobre los stored procedures - Bases de Datos Avanzadas, ITLA

TRANSCRIPT

Page 1: Procedimientos Almacenados

Instituto Tecnológico de Las Américas

StoredProcedures (SP)

Bases de Datos Avanzadas

Prof. Quinta Ana Pérez

Luis José Rodríguez (2009-0529)

Page 2: Procedimientos Almacenados

Qué son?

Son un conjunto de procedimientos almacenadosfísicamente en una base de datos (de ahí su nombre).Estos pueden ser llamados por una aplicaciónexterna, un trigger u otro storedprocedure.

Page 3: Procedimientos Almacenados

Implementación

La implementación de un SP varía de un SGBD a otro.La mayoría lo soportan de alguna forma.Dependiendo del SGBD, los SP pueden serimplementados por varios lenguajes deprogramación, tales como SQL, Java, C y C++.

Page 4: Procedimientos Almacenados

ImplementaciónLa creciente adopción de los SP llevó a la introducción deelementos procedurales en el propio estándar SQL. La mayoríade los sistemas de bases de datos ofrecen extensionespropietarias, extendiendo así las funcionalidades de SQL.

Page 5: Procedimientos Almacenados

Usos

En algunos sistemas se usan para controlar el manejo delas transacciones.

Los SP pueden ser invocados por un trigger. Por ejemplo,un SP puede ser disparado por un INSERT en una tablaespecífica, o un UPDATE en un campo, y el código del SP seejecutaría automáticamente.

También pueden ser usados para el control de gestión deoperaciones, y ejecutar procedimientos almacenadosdentro de una transacción de tal manera que lastransacciones sean efectivamente transparentes paraellos.

Page 6: Procedimientos Almacenados

VentajasEl servidor de la base de datos tiene acceso directo a los datos necesarios para manipular y sólo necesita enviar el resultado final al usuario.

Los procedimientos almacenados pueden permitir que la lógica delnegocio se encuentre como un API en la base de datos, que puedensimplificar la gestión de datos y reducir la necesidad de codificar la lógicaen el resto de los programas cliente. Esto puede reducir la probabilidad deque los datos sean corrompidos por el uso de programas clientesdefectuosos o erróneos.De este modo, el motor de base de datos puedeasegurar la integridad de los datos y la consistencia, con la ayuda deprocedimientos almacenados.

Aumentan el rendimiento. Una vez creados, son compilados y almacenados en el catálogo de la base de datos. Corren más rápido que comandos SQL enviados desde aplicaciones externas, ya que estos no están compilados.

Page 7: Procedimientos Almacenados

Ventajas

Reducen el tráfico entre las aplicaciones y el servidor de basesde datos porque en vez de enviar varios comandos SQL sincompilar, la aplicación sólo tiene que enviar el nombre del SP yobtener el resultado de su ejecución.

Sonreusables y transparentes a cualquier aplicación que loquiera usar. Los SP exponen la interfaz de la base de datos atodas las aplicaciones, por lo que los desarrolladores no tienenque programar funciones que ya están soportadas en losmismos.

Son seguros. Los DBA pueden dar permiso a x aplicación paraque pueda acceder a y SP en el catálogo de la base de datos, sintener que darle permiso de acceso a la tabla.

Page 8: Procedimientos Almacenados

Desventajas

Los Stored procedures son “definidos una vez, usados muchas”. Si senecesita modificarlo, su definición tiene que ser reemplazadatotalmente.

Cualquier cambio instantáneamente afecta todas las otras piezas desoftware, reportes, etc. (dentro o fuera del DBMS) que directa oindirectamente se refieran a este. No es siempre posible determinarcon exactitud qué magnitud tendrá este cambio, ni que cambiospueden hacerse para corregir lo antes mencionado sin afectar otracosa.

Por varias razones, muchas organizaciones limitan estrictamentequiénes pueden hacer consultas a la base de datos. Los programadoresy otros usuarios no tienen más opción que implementar solucionesineficientes a sus problemas usando los SP que estén disponibles… sinimportar o no que estos sean apropiados para la tarea.

Page 9: Procedimientos Almacenados

Desventajas

Hacen que la base de datos sea más pesada tanto para lamemoria como para el procesador. En vez de estar concentradoen almacenar y devolver datos, uno puede estarle pidiendo alSGBD que realice varias operaciones lógicas, la cual no es sufunción.

Sólo contienen SQL declarativo, así que es muy dificultosoescribir procedimientos complejos para negocios como en otroslenguajes de programación en la capa de aplicación tales comoJava, C#,C++…

Algunos SGBD modernos (notablemente Microsoft SQL Server2000 en adelante) no ofrecen ninguna ventaja de desempeñousando SP: son compilados y almacenados en caché de la mismaforma dynamic SQL.

Page 10: Procedimientos Almacenados

SQL Server

CREATE PROC [ EDURE ] [ owner. ] procedure_name [ ; number ]

[ { @parameter data_type }[ VARYING ] [ = default ] [

OUTPUT ] ] [ ,...n ]

[ WITH { RECOMPILE | ENCRYPTION |

RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ]

CREATE PROCEDUREautos

@velocidadint, @marcavarchar(50)

BEGIN

IF velocidad < 120 THEN

INSERT INTO familiares VALUES (velocidad, marca);

ELSE INSERT INTO deportivos VALUES (velocidad, marca);

END IF;

END;

Page 11: Procedimientos Almacenados

MySQLCREATE [DEFINER = { user | CURRENT_USER }]

PROCEDURE sp_name([proc_parameter[,...]]) [characteristic ...] routine_body CREATE [DEFINER = { user | CURRENT_USER }] FUNCTION sp_name([func_parameter[,...]]) RETURNS type[characteristic ...] routine_bodyproc_parameter: [ IN | OUT | INOUT ] param_nametypefunc_parameter: param_nametypetype: Any valid MySQL data typecharacteristic: LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string' routine_body: Valid SQL procedure statement

CREATE PROCEDURE autos(IN velocidad int,IN marca varchar(50))

BEGIN

IF velocidad < 120 then

INSERT INTO familiares VALUES(velocidad,marca);

ELSE INSERT INTO deportivos VALUES(velocidad,marca);

END IF;

END;

Page 12: Procedimientos Almacenados

OracleCREATE OR REPLACE PROCEDURE autos

IS

velocidad NUMBER(3), marca VARCHAR(50)

BEGIN

IF velocidad < 120 THEN

INSERT INTO familiares VALUES (velocidad, marca);

ELSE INSERT INTO deportivos VALUES (velocidad, marca);

END IF;

END;