Saltearse al contenido

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:

1
IF <condicion> THEN
2
<lista de sentencias>
3
ELSEIF <condicion> THEN
4
<lista de sentencias>
5
ELSE
6
<lista de sentencias>
7
END 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:

1
WHILE <condicion> DO
2
<lista de sentencias>
3
END WHILE;

Bibliografía

  1. https://dev.mysql.com/doc/refman/8.0/en/flow-control-statements.html
  2. https://dev.mysql.com/doc/refman/8.0/en/if.html
  3. https://dev.mysql.com/doc/refman/8.0/en/while.html