jueves, 24 de enero de 2013

Estructuras de Control

Las estructuras de control permiten, como su nombre lo indica, controlar el flujo de las instrucciones dentro de un procedimiento o una función. En la siguiente explicación, cada ocurrencia de instrucción(es), indica una lista de una o más instrucciones, cada una de las cuales debe terminar con ";".

Algunas de las estructuras pueden llevar una etiqueta (BEGIN, LOOP, REPEAT y WHILE). Las etiquetas no son sensibles a las mayúsculas o minúsculas pero deben seguir las siguientes reglas:

Si una etiqueta aparece al principio de alguna estructura, deberá también aparecer al final de la misma.
Una etiqueta no deberá aparecer al final de una estructura sin tener su correspondiente pareja al principio de la misma.
BEGIN ... END
BEGIN [instrucción(es)] END

etiqueta: BEGIN [instrucción(es)] END [etiqueta]

La estructura BEGIN … END se utiliza para agrupar un conjunto de instrucciones. Si un procedimiento o una función necesita contener más de una intrucción, éstas deberán aparecer dentro de un BEGIN … END. De la misma manera, si el procedimiento o función contienen una rutina DECLARE, ésta deberá aparecer al principio del bloque BEGIN … END.

CASE
CASE [expresión]
   WHEN expresión1 THEN instruccion(es)
   [WHEN expresión2 THEN instruccion(es)]
   ...
   [ELSE instruccion(es)]
END CASE;

IF
IF expr1 THEN instruccion(es)
[ELSEIF expr2 THEN instruccion(es)] ...
[ELSE instruccion(es)]
END IF

ITERATE
ITERATE etiqueta

ITERATE solamente puede aparecer dentro de un LOOP, REPEAT y WHILE . Lo que realmente significa es: "Haz el ciclo de Nuevo". Por ejemplo:

delimiter $
CREATE PROCEDURE doiterate(p1 INT)
BEGIN
   label1: LOOP
   SET p1 = p1 + 1;
   IF p1 < 10 THEN
      ITERATE label1;
   END IF;
   LEAVE label1;
   END LOOP label1;
   SET @x = p1;
   END$
delimiter ;

LEAVE
LEAVE etiqueta

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.

LOOP
[etiqueta_inicio:] LOOP
   instruccion(es)
END LOOP [etiqueta_fin]

LOOP implementa un ciclo simple, permitiendo que una instrucción o conjunto de instrucciones se repitan. Las instrucciones dentro de este ciclo se repetirán hasta que se ocasione alguna salida, lo cual se hace generalmente con una instrucción LEAVE.

Un ciclo LOOP puede ser etiquetado. etiqueta_fin no puede estar presente a menos que etiqueta_inicio también lo está y, si ambos están presentes, deberán ser iguales.

REPEAT
[etiqueta_inicio:] REPEAT
   instruccion(es)
UNTIL condicion
END REPEAT [etiqueta_fin];

La instrucción o instrucciones dentro de un ciclo REPEAT se repetirán hasta que la condicion sea verdadadera.

Un ciclo REPEAT puede ser etiquetado. etiqueta_fin no puede estar presente a menos que etiqueta_inicio también lo está y, si ambos están presentes, deberán ser iguales.

RETURN
RETURN expresión;

La instrucción RETURN se utiliza solamente dentro de una función. Al ejecutarse, terminará por completo la función dentro de la que se encuentra.

WHILE
[etiqueta_inicio:] WHILE condición DO
   instruccion(es)
END WHILE [etiqueta_fin]

La instrucción o instrucciones dentro de un WHILE serán repetidas mientras la condición sea verdadera.

Un ciclo WHILE puede ser etiquetado. etiqueta_fin no puede estar presente a menos que etiqueta_inicio también lo está y, si ambos están presentes, deberán ser iguales.

No hay comentarios:

Publicar un comentario