2. Índice
Rutinas almacenadas (SR) y Lenguaje de Programas
Almacenados (SPL)
Inspeccionando las rutinas almacenadas
2
3. Rutinas Almacenadas
Cuando múltiples aplicaciones cliente se escriben en
distintos lenguajes o funcionan en distintas plataformas,
pero necesitan realizar la misma operación en la base
de datos.
Cuando la seguridad es muy importante. Los bancos,
por ejemplo, usan procedimientos almacenados para
todas las oparaciones comunes. Esto proporciona un
entorno seguro y consistente, y los procedimientos
pueden asegurar que cada operación se loguea
apropiadamente. En tal entorno, las aplicaciones y los
usuarios no obtendrían ningún acceso directo a las
tablas de la base de datos, sólo pueden ejectuar
algunos procedimientos almacenados.
3
4. Rutinas Almacenadas
Conjunto de sentencias disponibles para las aplicaciones
que acceden a un RDBMS.
Almacenados en el Gestor de la Bases de Datos.
En MySQL , se escriben usando SPL basado en un
subconjunto del estandar Módulo de Almacenamiento
Persistente del ANSI SQL:2003 (PSM).
4
5. Rutinas Almacenadas
Tiene un nombre
Puede tener una lista de parámetros
Puede contener un conjunto de sentencias SQL.
Se crean utilizando el comando CREATE.
5
6. Rutinas Almacenadas
Por defecto, se crea en la base de datos actual. Si
queremos crearla en una BD distinta, deberemos hacer
preceder el nombre de la BD de destino.
El delimitador de línea de comando por defecto (;) necesita
ser cambiado a la hora de codificar rutinas almacenadas.
6
8. Rutinas Almacenadas
Cuando se invocan, se realiza un USE DBName implícito (y
se deshace cuando la rutina termina). La sentencia USE no
está permitida dentro de las SRs.
Cuando se borra una DB, todas las SR almacenadas en él, se
borran también.
MySQL soporta 3 tipos de rutinas:
1. Procedimientos Almacenados (SP),
2. Funciones Almacenadas (SF),
3. Triggers o Disparadores.
8
9. Procedimientos Almacenados
Son llamados utilizando el comando explícito CALL.
No devuelven un valor de manera explícita.
CREATE PROCEDURE `DBName.AddData`(err VARCHAR(255))
…..
CALL AddData(“…”);
9
10. Procedimientos Almacenados
Conjunto de sentencias SQL que pueden ser almacenados
en el servidor.
Una vez creados, los clientes pueden referirse al
procedimiento almacenado en lugar de ejecutar las
sentencias individuales.
Ninguno de los 3 tipos de parámetros son requeridos en
un SP.
10
11. Procedimientos Almacenados
Aunque no tenga parámetros, hay que finalizar la
definición de la cabecera con ().
No obstante, un SP sin parámetros, puede ser invocado sin
utilizar los paréntesis.
Se le invoca utilizando el comando CALL.
Un SP puede mostrar resultados o devolver los resultados
en las variables OUTPUT especificadas.
11
12. Tipos de parámetros
IN.
Es el parámetro por defecto. Puede cambiar su valor dentro
de la rutina, pero, permanece inalterable su valor externo.
OUT.
En el momento de la llamada, su valor es NULL, pero,
puede ser modificado dentro de la rutina y dicho valor
estará disponible en el exterior de la rutina.
INOUT.
Se comporta como una combinación de los 2 anteriores. Se
le puede asignar un valor en la llamada, que puede ser
modificado en el interior y estar disponible en el exterior.
12
13. Procedimientos Almacenados
CREATE PROCEDURE how_is_it (IN x INT)
BEGIN
IF (x > 5) THEN
SELECT CONCAT(x, " is higher") as answer;
ELSE
SELECT CONCAT(x, " is lower") as answer;
END IF;
END
13
15. Funciones Almacenadas
Pueden ser usadas como funciones definidas por el
usuario.
Se invocan utilizando su nombre.
Puede devolver un valor, que puede ser usado en otra
sentencia SQL, de la misma forma que se invocan a otras
funciones como REPLACE, CONCAT(), etc.
CREATE FUNCTION AddData()
RETURNS ……..
SELECT AddData();
15
16. Funciones Almacenadas
Una SF no puede mostrar resultados.
Una SF se crea utilizando el comando
CREATE .
Los parámetros de entrada (IN) no son
requeridos en una SF.
Una SF debe tener una sentencia RETURN y
sólo puede devolver un valor.
16
17. Funciones Almacenadas
Una SF es llamada simplemente con su nombre (sin usar
CALL).
El nombre de una SF debe ser diferente a la de cualquier
función SQL.
The Optimizations section will consists of two main sub sections:
SQL Optimizations. SRs as an alternative to Reducing Network Traffic and Complex SQL Statements
SRs Optimizations. This sub section will include: Branching and Looping optimizations, Cursor and Triggers Overhead, Recursion.
The stored routine and language concept was introduced in the early 90’s.
MySQL PSL is very similar (uses the same ANSI SQL:2003 standard specification) to the PSL used by DB2 (one of IBM’s RDBMS),
while it is different from Oracle and Microsoft SQL PSL, which are very much proprietary.