Bases de Datos

Stored procedures en MySQL

Te explicamos qué son las Stored procedures en MySQL y cuándo son especialmente útiles de usar.

Publicado el 28 de Octubre de 2013
Compartir

Disponibles desde MySQL 5.0 Son especialmente útiles:

  • Cuando varias aplicaciones necesitan una misma consulta (así está centralizada)
  • En entornos donde la seguridad es muy importante, para asegurar que todas las acciones se registran debidamente.

Se necesitan los permisos de CREATE ROUTINE, ALTER ROUNTINE y/o EXECUTE. Sintaxis:

CREATE PROCEDURE sp_name ([parameter[,...]]) [characteristic ...] routine_body
  • parameter: [ IN | OUT | INOUT ] param_name type
  • type: cualquier tipo válido de MySQL
  • characteristic: LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string'
  • routine_body: comandos SQL válidos

Un procedimiento o función se considera “determinista” si siempre produce el mismo resultado para los mismos parámetros de entrada, y “no determinista” en cualquier otro caso (en el caso de un SELECT es complicado si no se filtra por PK). Para replicación, se debería usar la función NOW(). Las funciones RAND() no tienen porqué crear un resultado no determinista. Varias características proporcionan información sobre la naturaleza de los datos usados por la rutina. CONTAINS SQL indica que la rutina no contiene comandos que leen o escriben datos. NO SQL indica que la rutina no contiene comandos SQL . READS SQL DATA indica que la rutina contiene comandos que leen datos, pero no comandos que escriben datos. MODIFIES SQL DATA indica que la rutina contiene comandos que pueden escribir datos. CONTAINS SQL es el valor por defecto si no se dan explícitamente ninguna de estas características.

sp1

Ejemplo simple de procedimiento almacenado

sp2

Ejemplo con varias consultas

Si se quiere desarrollar un procedimiento almacenado genérico, pueden utilizarse condiciones para modificar su comportamiento y adaptarlo a varios propósitos:

sp3

Ejemplo: Si el parámetro de entrada es 0, retorna todos los registros, en caso contrario filtra.

La principal ventaja del uso de SP es que la base de datos puede preparar un plan de ejecución óptimo :

  • No se usará un plan “cualquiera”.
  • El plan de ejecución ya está calculado, reduciendo el tiempo de gestión de la consulta.

¡Cuidado!

  • Usar nombres autoexplicativos.
  • No están soportados por la mayoría de softwares tipo phpmyadmin. MySQL recomienda el uso de la consola.
  • Es muy importante no implementar la lógica de negocio dentro del stored procedure .

Nos vemos en el siguiente artículo!


Compartir este post

También te puede interesar...

Tecnología

Triggers en MySQL

26 Octubre 2013 Sergio Perales
Tecnología

Funciones en MySQL

31 Octubre 2013 Sergio Perales
Creación y administración de Bases de Datos

Curso de creación y administración de Bases de Datos SQL

4 horas y 12 segundos · Curso

Prepárate para convertirte en el héroe de los datos con este curso. Si sabes lo básico de informática y has jugueteado con SQL, estás listo …

  • Bases de Datos
Artículos
Ver todos