Rutinas almacenadas
MySQL, al igual que muchos otros SGBD relacionales, soporta rutinas almacenadas (funciones y procedimientos), que permiten reutilizar sentencias, o conjuntos de sentencias, llamando a la rutina por su nombre, unificando una lógica del negocio común. Posteriormente, una rutina almacenada puede ser utilizada por algún programa o aplicación externa.
Una función o procedimiento, además de las sentencias de consulta que ya vimos, pueden contener sentencias de control de flujo de SQL, lo cual permite agregar una lógica programática a estas rutinas.
En este tema veremos la potencialidad de esta característica sin entrar mucho en sus detalles de implementación, ya que es un tema muy extenso.
Sentencias de control de flujo
El estándar SQL incluye sentencias de control de flujo que funcionan como las de un lenguaje de programación, permitiendo escribir rutinas complejas.
Estas sentencias, entre otras, incluyen selección (IF
y CASE
) y ciclos (LOOP
, WHILE DO
, REPEAT UNTIL
).
Veremos una breve descripción de las clásicas IF
y WHILE
.
Sentencia IF
La sentencia IF
permite la selección de un flujo de ejecución dependiendo del valor de una condición (o más si consideramos la cláusula ELSEIF
), como en un lenguaje de programación.
La sentencia IF
tiene la siguiente sintaxis:
1IF <condicion> THEN2 <lista de sentencias>3ELSEIF <condicion> THEN4 <lista de sentencias>5ELSE6 <lista de sentencias>7END IF;
Sentencia WHILE
Es un ciclo repetitivo condicional clásico, con la evaluación de la condición al inicio del mismo.
La sentencia WHILE
tiene la siguiente sintaxis:
1WHILE <condicion> DO2 <lista de sentencias>3END WHILE;