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.
Sintaxis
CASE
case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END
CASE
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END
CASE
Funcionamiento
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.
Cap comentari :
Publica un comentari a l'entrada