Bucle en procedimiento almacenado MySQL

Hay tres bucles estándar en la declaración de procedimiento almacenado de MySQL: WHILE loop, LOOP loop y REPEAT loop. También hay un método de bucle no estándar: GOTO, pero es mejor no usar este método de bucle, es fácil causar confusión en el programa, aquí hay una buena introducción.

El formato de estas declaraciones de bucle es el siguiente:
MIENTRAS ... HACER ... FINALIZAR MIENTRAS
REPETIR ... HASTA FINALIZAR REPETIR
LOOP ... FINALIZAR LOOP
GOTO.

Primero escribamos un ejemplo usando el primer bucle.

Código de copia

PROCEDIMIENTO DE GOTA SI EXISTE `pro10`; 
DELIMITER $$ 
CREATE PROCEDURE `pro10` () 
COMENZAR 
    -定义变量
    DECLARE v_i int DEFAULT sin signo 0; 
    MIENTRAS que v_i <5 
        SELECCIONE v_i; 
        SET v_i = v_i + 1; 
    FINAL MIENTRAS; 
FIN $$ 
DELIMITADOR; 

LLAMAR a pro10 ();

Código de copia

Echemos un vistazo a la segunda instrucción de control de bucle REPEAT ... END REPEAT. Use la instrucción de control de bucle REPEAT para escribir el siguiente procedimiento almacenado:

Código de copia

PROCEDIMIENTO DE GOTA SI EXISTE `pro11`; 
DELIMITER $$ 
CREATE PROCEDURE `pro11` () 
COMENZAR 
    -定义变量
    DECLARE v_i int DEFAULT sin signo 0; 
    REPETIR 
        SELECCIONAR v_i; 
        SET v_i = v_i + 1; 
    HASTA v_i> = 5 END REPEAT; 
FIN $$ 
DELIMITADOR; 

LLAMAR a pro11 ();

Código de copia

Echemos un vistazo a la declaración de control del tercer bucle LOOP ...... END LOOP. Escriba un programa de procedimiento almacenado de la siguiente manera:

Código de copia

PROCEDIMIENTO DE GOTA SI EXISTE `pro12`; 
DELIMITER $$ 
CREATE PROCEDURE `pro12` () 
COMENZAR 
    -定义变量
    DECLARE v_i int DEFAULT sin signo 0; 
    LOOP_LABEL: LOOP 
        SELECT v_i; 
        SET v_i = v_i + 1; 
        SI v_i> = 5 LUEGO 
            DEJE LOOP_LABEL; 
        TERMINARA SI; 
    END LOOP; 
FIN $$ 
DELIMITADOR; 

LLAMAR a pro12 ();

Código de copia

Código de copia

PROCEDIMIENTO DE GOTA SI EXISTE `pro13`; 
DELIMITER $$ 
CREATE PROCEDURE `pro13` () 
COMENZAR 
    -定义变量
    DECLARE v_i int DEFAULT sin signo 0; 
    LOOP_LABEL: LOOP 
        IF v_i = 3 LUEGO 
            SET v_i = v_i + 1; 
            ITERATE LOOP_LABEL; # => continuar 
        FINALIZAR SI; 
        SELECCIONE v_i; 
        SET v_i = v_i + 1; 
        SI v_i> = 5 LUEGO 
            DEJE LOOP_LABEL; # => descanso; 
        TERMINARA SI; 
    END LOOP; 
FIN $$ 
DELIMITADOR; 

LLAMAR a pro13 ();

Código de copia

266 artículos originales publicados · elogiados 17 · 10,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/qq_18671415/article/details/105410479
Recomendado
Clasificación