procedimientos y funciones
TRANSCRIPT
1
Rutinas almacenadas
Administración de Sistemas Gestores de Bases de Datos
Índice
Rutinas almacenadas (SR) y Lenguaje de Programas Almacenados (SPL)
Inspeccionando las rutinas almacenadas
2
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
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
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
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
Rutinas Almacenadas
DELIMITER // CREATE PROCEDURE `DBName.AddData`(err VARCHAR(255)) BEGIN ………… END; // DELIMITER ;
7
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
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
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
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
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
Procedimientos Almacenados
CREATE PROCEDURE how_is_it (IN x INT)BEGIN
IF (x > 5) THENSELECT CONCAT(x, " is higher") as answer;
ELSESELECT CONCAT(x, " is lower") as answer;
END IF;END
13
Procedimientos Almacenados
CALL how_is_it(6);+-------------+| answer |+-------------+| 6 is higher |+-------------+
CALL how_is_it(2);+-------------+| answer |+-------------+| 2 is lower |+-------------+
14
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
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
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.
Funciones Almacenadas
CREATE FUNCTION is_bigger (x INT)RETURNS CHAR(3)BEGIN IF (x > 5) THEN RETURN 'YES'; ELSE RETURN 'NO'; END IF;END
18