dissabte, 1 de gener del 2000

Constructores de control de flujo


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