IF,

LOOP, ITERATE, LEAVE, REPEAT/UNTIL y WHILE/DO.

La

sentencia IF:

Qué es?

Es una declaración, también existe el if como función y no lo debemos confundir.

Sintaxis

IF search_condition THEN statement_list

[ELSEIF search_condition THEN statement_list] ...

[ELSE statement_list]

END IF

Funcionamiento

IF implementa un constructor condicional básico. Si search_condition se evalúa a cierto, el comando SQL correspondiente “THEN” se ejecuta. Si no coincide ninguna search_condition, salta a la sucesión de ELSEIF/ELSE en caso de haberla.

Ejemplo

Crearemos un pequeño procedimiento. El siguiente ejemplo utiliza la sentencia IF para comprobar si un número es múltiplo de 100.

delimiter //

create procedure select_arbitre(in n int)

begin

if (mod(n,100) = 0) then

select n/100;

end if;

end //

La

sentencia CASE:

Qué es?

El comando CASE para procedimientos almacenados implementa un constructor condicional complejo.

SintaxisCASE case_value

WHEN when_value THEN statement_list

[WHEN when_value THEN statement_list] ...

[ELSE statement_list]

END CASECASEWHEN search_condition THEN statement_list

[WHEN search_condition THEN statement_list] ...

[ELSE statement_list]

END CASEFuncionamiento

Si una search_condition se evalúa a cierto, el comando SQL correspondiente se ejecuta. Si no coincide ninguna condición de búsqueda, el comando en la cláusula ELSE se ejecuta.

Nota: La sitaxis de un comando CASE mostrado aquí para uso dentro de procedimientos almacenados difiere ligeramente de la expresión CASE. El comando CASE no puede tener una cláusula ELSE NULL y termina con END CASE en lugar de END.

La sentencia LOOP:

Qué es?

Loop implementa un constructor de bucle simple que permite la ejecución repetida de comandos particulares.

Sintaxis

[begin_label:] LOOP

statment_list

END LOOP [end_label]

Funcionamiento

La ejecución del comando se repite hasta acabar el bucle, normalmente por el comando “Leave”.

Normalmente los comandos LOOP se etiquetan:

“end_label” no puede darse si no esta presente “begin_label” , y si ambos lo están, deben ser el mismo.

Normalmente se usa conjuntamente con los constructores “Leave”, para abandonar el bucle en caso de cumplirse una condición, y “Iterate” para volver a hacer el bucle si cumple una condición.

La sentencia LEAVE:

Qué es?

Esta instrucción es utilizada para salir de alguna estructura de control. Puede ser usada dentro de un BEGIN ... END o dentro de algún ciclo (Bucles).

Sintaxis

label1: LOOP

SET p1 = p1 + 1;

IF p1 < 10 THEN

ITERATE label1;

END IF;

LEAVE label1; ---> Aquí rompemos un Bucle

END LOOP label1;

Funcionamiento

Con este comando logramos romper el bucle y salir de él.

La sentencia ITERATE:

Qué es?

ITERATE significa “vuelve a hacer el bucle”.

ITERATE sólo puede aparecer en comandos LOOP, REPEAT, y WHILE .

Sintaxis

CREATE PROCEDURE doiterate(p1 INT)

BEGIN

label1: LOOP

SET p1 = p1 + 1;

IF p1 < 10 THEN

ITERATE label1;

Funcionamiento

Si se cumple la condición, el Iterate repite el loop.

La sentencia REPEAT/UNTIL

Qué es?

La sentencia REPEAT/UNTIL es un comando que repite el comando que se encuentra en su interior hasta que se cumple una condición.

Sintaxis

Esta sentencia está formada por dos parámetros básicos:

1. La sentencia o lista de sentencias que se han de repetir.

2. La condición de salida del bucle.

La sentencia ha de terminar con una sentencia END REPEAT;

Además la sentencia REPEAT puede estar etiquetada por una etiqueta de inicio (BEGIN) y una de final (END) iguales.

Funcionamiento

En esta sentencia se repite la lista de sentencias hasta que la condición es cierta. El bucle siempre entra por lo menos una vez y la lista de sentencias puede consistir de más de una, separadas por un punto coma (;) después de haber delimitado la //.

La sentencia WHILE/DO

Qué es?

La sentencia WHILE/DO es un comando que repite el comando que se encuentra en su interior mientras la condición del WHILE es cierta.

Sintaxis

[begin_label:]

WHILE search_condition DO

statement_list

END WHILE

[end_label]

Esta sentencia está formada por dos parámetros básicos:

1. La condición de permanencia en el bucle.

2. La sentencia o lista de sentencias que se han de repetir.

La sentencia ha de terminar con una sentencia END WHILE;

Además la sentencia WHILE/DO puede estar etiquetada por una etiqueta de inicio (BEGIN) y una de final (END) iguales.

Funcionamiento

En esta sentencia se repite la lista de sentencias mientras la condición es cierta. El bucle siempre entra por lo menos una vez y la lista de sentencias puede consistir de más de una, separadas por un punto coma (;) después de haber delimitado la //.

Además la sentencia WHILE/DO puede estar etiquetada por una etiqueta de inicio (BEGIN) y una de final (END) iguales.