MySQL MIENTRAS Bucle

En esto, cubriremos la descripción general de MySQL WHILE Loop y luego cubriremos el algoritmo de cada ejemplo y luego veremos el análisis de cada ejemplo. Discutámoslo uno por uno.

Introducción: la declaración de bucle WHILE de
MySQL se utiliza para ejecutar una o más declaraciones una y otra vez, siempre que una condición sea verdadera. Podemos usar el ciclo cuando necesitamos ejecutar la tarea con repetición mientras la condición es verdadera.
Nota: 
use una declaración WHILE LOOP en caso de que no esté seguro de la cantidad de veces que desea que se ejecute el cuerpo del ciclo. Dado que la condición MIENTRAS se evalúa antes de ingresar al ciclo, es posible que el cuerpo del ciclo no se ejecute ni una sola vez.

Sintaxis:

[label_name:] WHILE 
condition DO 
  statements_list
END WHILE [label_name]

Significado de la etiqueta de sintaxis –

  • Label_name – label_name 
    es opcional, es un nombre relacionado con el bucle WHILE.
  • Condición: 
    la condición se prueba y cada una se somete a través del ciclo WHILE. Si la condición da como resultado VERDADERO, se ejecuta la lista de sentencias, o si la condición da como resultado FALSO, el ciclo WHILE finaliza.
  • Lista de declaraciones 
    : la lista de declaraciones es que la lista de declaraciones que se ejecutarán soportará el bucle WHILE.

Diagrama de bloques del ciclo while:

Diagrama de bloques del bucle WHILE 

 

Ejemplos de MySQL WHILE Loop:

Ejemplo-1: 
Nos permite crear una función usando un ciclo while.

DELIMITER $$
CREATE FUNCTION GeekInc ( value INT )
RETURNS INT
BEGIN
  DECLARE inc INT;
  SET inc = 0;
  label: 
WHILE inc <= 30000 DO
    SET inc = inc + value;
  END 
WHILE label;
  RETURN inc;
END; $$
DELIMITER ;

Análisis –

  • El valor es la entrada para la función GeekInc.
  • inc se declara y se establece en 0.
  • Mientras que inc es menor que e igual a 3000, establecerá inc en inc + valor.

Para verificar la salida, use el siguiente comando que se proporciona a continuación.

CALL GeekInc(10000);

Producción –

0, 10000, 20000, 30000

Ejemplo-2:
Vamos a crear un procedimiento usando un ciclo while.

DELIMITER $$
CREATE procedure while_ex()
block: BEGIN
 declare value VARCHAR(20) default ' ' ;
 declare num INT default 0;
 SET num = 1;
 WHILE num <= 5 DO
   SET value = CONCAT(value, num ,',' );
   SET num = num + 1;
 END
 WHILE block;
 select value ;
END $$
DELIMITER ;

Análisis –

  • cree el procedimiento while_ex y declare el valor y el número.
  • establecer num en 1, mientras que num es igual o menor que 5 do
  • establecer valor igual a la concatenación de valor y num.

Para verificar la salida, use el siguiente comando que se proporciona a continuación.

call while_ex();

Producción –

valor
1,2,3,4,5  

Ejemplo-3: 
Vamos a crear una tabla «Test_Cal» que tiene fechas de la siguiente manera.

CREATE TABLE Test_Cal(
   t_in INT AUTO_INCREMENT,
   fulldate DATE UNIQUE,
   day TINYINT NOT NULL,
   month TINYINT NOT NULL,
   PRIMARY KEY(id)
);

Ahora, cree un procedimiento almacenado para insertar datos en la tabla de la siguiente manera.

DELIMITER $$
CREATE PROCEDURE InsertCal(dt DATE)
BEGIN
   INSERT INTO Test_Cal(
       fulldate,
       day,
       month )
   VALUES(dt,  
       EXTRACT(DAY FROM dt),
       EXTRACT(MONTH FROM dt)
     );
END$$
DELIMITER ;

Ahora cree el procedimiento almacenado LoadCal() que actualiza la cantidad de días a partir de una fecha de inicio en la tabla.

DELIMITER $$
CREATE PROCEDURE LoadCal(
   startDate DATE,  
   day INT
)
BEGIN
      DECLARE counter INT DEFAULT 1;
   DECLARE dt DATE DEFAULT startDate;
   WHILE counter <= day DO
       CALL InsertCal(dt);
       SET counter = counter + 1;
       SET dt = DATE_ADD(dt,INTERVAL 1 day);
   END WHILE;
END$$
DELIMITER ;

Análisis –

  • El procedimiento almacenado LoadCal() tiene dos parámetros: startDate y day.
  • Primero, declare un contador y variables dt para guardar valores.
  • Luego, verifique si el contador es menor o igual al día, en caso afirmativo:
  • Ejecute el procedimiento almacenado Inertial() para insertar una fila en la tabla Test_Cal.
  • Un aumento en el contador en 1 aumenta el dt en 1 día usando DATE_ADD().
  • El bucle WHILE inserta la fecha en la tabla hasta que el contador es el mismo que el día.

Para verificar la salida, use el siguiente comando que se proporciona a continuación.

CALL LoadCal('2021-01-01',31);
select * from Test_Cal where tid < 10 ;

Producción –

t_id fecha completa día mes
1  2021-01-01 1 1
2 2021-01-02 2 1
3  2021-01-03 3 1
4 2021-01-04 4 1
5 2021-01-05 5 1
6 2021-01-06 6 1
7 2021-01-07 7 1
8 2021-01-08 8 1
9 2021-01-09 9 1

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 *