Bucles en MySQL

La declaración MySQL LOOP podría usarse para ejecutar un bloque de código o un conjunto de declaraciones, una y otra vez, dependiendo de la condición.

Sintaxis:

[labelname:] LOOP
   statements
END LOOP [labelname]

Parámetros –

  • labelname : Es una etiqueta opcional al inicio y al final.
  • sentencias: Pueden tener una o varias sentencias, cada una terminada en punto y coma (;) y ejecutadas por LOOP.

Sintaxis de la sentencia LOOP con sentencia LEAVE:

[labelname]: LOOP
     -- terminate the loop
   IF condition THEN
       LEAVE [labelname];
   END IF;
END LOOP;

Ejemplo 1 :

DROP PROCEDURE IF EXISTS GeekLoop();
DELIMITER $$ 
CREATE PROCEDURE GeekLoop()
 BEGIN
DECLARE no INT;
  SET no = 0;
  loop: LOOP
    SET no = no +1;
    select no ;
    IF no =5 THEN
     LEAVE loop;
    END IF;
 END LOOP loop;
SELECT no;
END $$
DELIMITER ;

Declaración para verificar la salida:

CALL GeekLoop();

Producción –

0, 1, 2, 3, 4, 5

Ejemplo-2:

DELIMITER $$
CREATE FUNCTION Geekdemo (value1 INT)
RETURNS INT
BEGIN
 DECLARE value2 INT;
 SET value2 = 0;
 label: LOOP
  SET income = value2 + value1 ;
  IF value2 < 4000 THEN
    ITERATE label;
  END IF;
  LEAVE label;
 END LOOP label;
 RETURN value2 ;
END $$
DELIMITER ;

Consultas para verificar la salida:

CALL Geekdemo();

Aporte –

value1: 3500

Producción –

value2: 3500

Ejemplo-3:

CREATE TABLE Geektable (value VARCHAR(50) NULL DEFAULT NULL);
DELIMITER $$ 
CREATE PROCEDURE ADD()
 BEGIN
  DECLARE a INT Default 1 ;
  simple_loop: LOOP     
    insert into table1 values(a);
    SET a=a+1;
    IF a=11 THEN
      LEAVE simple_loop;
    END IF;
 END LOOP simple_loop;
END $$

Consultas para verificar la salida –

CALL ADD();
Select value 
from Geektable;

Producción –

1
2
3
4
5
6
7
8
9
10 

Publicación traducida automáticamente

Artículo escrito por khushboogoyal499 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *