Mysql
Procedimientos almacenados y Funciones
Que son?
Un procedimiento almacenado es un conjunto de comandos SQL que pueden almacenarse en un servidor de base de datos. Luego de su creación, cada cliente puede invocarlo y de esta manera se reutiliza el código, sin necesidad de ejecutar los comandos individualmente.
Ventajas de la utilización
●
●
●●
●
Sintaxis flexible: Los rutinas almacenadas pueden escribirse utilizando extensiones de la sintaxis de SQL, tales como, construcciones de control de flujo, que facilitan realizar lógicas complejas. Capacidad de manejo de errores: Se pueden crear manejadores de error para ser utilizados cuando se produzca una condición determinada. De esta forma puede evitarse la finalización de larutina ante un error. Compilación Estándar: Se atienen a la sintaxis estándar, por lo que son trasladables a otras bases de datos que sigan los estándares. Encapsulación y empaquetado de código: Permite tener el código almacenado y ser utilizado desde múltiples aplicaciones. Menos “Re-invención de la rueda”: Actúan como una biblioteca de soluciones para resolver problemas, facilitan el compartir delconocimiento y la experiencia. Un programador SQL que tiene habilidades, puede resolver un problema de gran índole con un SP y este puede ser reutilizado por otro.
Ventajas de la utilización
● ●
●
Fácil de Mantener: Una rutina es mas fácil de mantener que una copia embebida en cada aplicación. Reducción del requerimiento de Ancho de Banda: Imagine múltiples operaciones realizadas por uncliente sin la utilización de un SP. Cada sentencia y su resultado viaja a través de la red, incluso aquellos que calculan un resultado intermedio. Si en cambio esta operación se realiza con SP, las sentencias y resultados intermedios se procesan completamente del lado del servidor. Mejor seguridad: Una rutina puede ser escrita para acceder a información sensible. Esta se puede configurar para queel que la invoca o ejecuta, no vea información que no debe. Un SP puede ser utilizado para modificar tablas en modo seguro sin darle al usuario acceso a la tabla.
Diferencias entre SP y funciones
Un SP no retorna solo un valor. Es invocado con una sentencia CALL. ● Una función se invoca dentro de una expresión y retorna un valor simple directamente al invocador para ser utilizada en esaexpresión ● No se puede invocar una función con CALL, y tampoco se puede invocar un SP en una expresión
●
Cada rutina almacenada esta asociada con una base en particular. ● Cuando se invoca la rutina, se realiza implícitamente USE db_name. No se permite cambiar la base dentro de un SP. ● Se interpreta una referencia, nombre_rutina, en la base de datos por defecto. Para referirse a una rutina enuna base de datos especifica hay que hacerlo de la manera: CALL nombre_base_de_datos.nombre_rutina ● Cuando una rutina se ejecuta,se cambia la base de datos a la que esta asociada la rutina y cuando termina setea como base por defecto la base anterior. Debido a esto, se debe tener acceso a esa base de datos para poder invocar la rutina. ● Cuando se borra una base de datos, todos los procedimientosalmacenados asociados con ella también se borran.
Invocacion de rutinas asociadas a la BD
Definición
CREATE PROCEDURE nombre_procedure ([Parámetros[,...]]) [características.] Cuerpo_de_la_rutina CREATE FUNCTION nombre_funcion ([Parámetros[,...]]) RETURNS tipo_dato [Características..] Cuerpo_de_la_rutina Puede darse como un bloque BEGIN / END que contiene varias sentencias. Cada declaracióndebe terminar con punto y coma (;). Si usa el cliente de consola de mysql, el (;) es ambiguo entre la definición de la rutina y el final de sentencia. Para esto existe el comando delimiter que nos permite definir como queremos marcar el final de una rutina.
Definición
La clausula opcional [Características] contiene los siguientes valores, estos pueden aparecer en cualquier orden:
●
SQL...
Regístrate para leer el documento completo.