Maison > Article > base de données > Quelles sont les instructions de boucle dans les procédures stockées MySQL ?
Il existe trois types d'instructions de boucle dans les procédures stockées MySQL : 1. Instruction de boucle WHILE, la syntaxe est "WHILE expression conditionnelle DO instruction de boucle END WHILE" 2. Instruction de boucle REPEAT, la syntaxe est "Instruction de boucle REPEAT UNTIL expression conditionnelle" ; END REPEAT"; 3. Instruction de boucle LOOP, syntaxe "[begin_label:] Condition LOOP et liste d'instructions de boucle END LOOP [end_label]".
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
MySQL fournit des instructions de boucle qui vous permettent d'exécuter à plusieurs reprises une section de code SQL en fonction de conditions. Il existe trois types d'instructions de boucle dans MySQL : WHILE, REPEAT et LOOP.
WHILE Loop
La syntaxe de l'instruction WHILE est la suivante :
WHILE expression DO statements END WHILE
WHILE La boucle vérifie expression
au début de chaque itération. Si expression
est évalué à TRUE
, MySQL exécutera WHILE
, END WHILEinstructions
/ code>Jusqu'à ce que expression
soit évalué FALSE
. La boucle WHILE est appelée boucle de prétest car elle vérifie les expressions avant que les instructions
ne soient exécutées. expression
在每次迭代的开始。如果expression
评估为TRUE
,MySQL将 在评估statements
之间执行 WHILE
,END WHILE
直到expression
评估为止FALSE
。WHILE 循环称为预测试循环,因为它在statements
执行之前检查表达式。
以下流程图说明了WHILE循环语句:
以下是WHILE 在存储过程中使用循环语句的示例:
DELIMITER $$ DROP PROCEDURE IF EXISTS test_mysql_while_loop$$ CREATE PROCEDURE test_mysql_while_loop ( ) BEGIN DECLARE x INT; DECLARE str VARCHAR ( 255 ); SET x = 1; SET str = ''; WHILE x <= 5 DO SET str = CONCAT( str, x, ',' ); SET x = x + 1; END WHILE; SELECT str; END $$ DELIMITER ;
在test_mysql_while_loop上面的存储过程中:
首先,我们str 重复构建字符串,直到x 变量的值 大于5。
然后,我们使用SELECT语句显示最终字符串。
请注意,如果我们不初始化 x变量,则其默认值为NULL。因此,WHILE循环语句中的条件始终是TRUE 并且您将具有无限循环,这不是期望的。
我们来测试一下test_mysql_while_loop存储过程:
CALL test_mysql_while_loop();
输出结果:
REPEAT循环
REPEAT 循环语句的语法如下:
REPEAT statements UNTIL expression END REPEAT
首先,MySQL执行statements
,然后评估expression
。如果expression
评估为FALSE
,则MySQL statements
重复执行直到expression
评估为止TRUE。
因为REPEAT 循环语句expression
在执行后检查statements
Ce qui suit est un exemple d'utilisation de l'instruction de boucle WHILE dans une procédure stockée :
DELIMITER $$ DROP PROCEDURE IF EXISTS mysql_test_repeat_loop $$ CREATE PROCEDURE mysql_test_repeat_loop ( ) BEGIN DECLARE x INT; DECLARE str VARCHAR ( 255 ); SET x = 1; SET str = ''; REPEAT SET str = CONCAT( str, x, ',' ); SET x = x + 1; UNTIL x > 5 END REPEAT; SELECT str; END $$ DELIMITER ;
Dans la procédure stockée ci-dessus test_mysql_while_loop :
Tout d'abord, nous construisons la chaîne str à plusieurs reprises jusqu'à ce que le variable x La valeur de est supérieure à 5.
Ensuite, nous utilisons une instruction SELECT pour afficher la chaîne finale.Veuillez noter que si nous n'initialisons pas la variable x, sa valeur par défaut est NULL. Par conséquent, la condition dans l’instruction de boucle WHILE sera toujours TRUE et vous aurez une boucle infinie, ce qui n’est pas souhaité.
Testons la procédure stockée test_mysql_while_loop :CALL mysql_test_repeat_loop();Résultat de sortie :
REPEAT loop
REPEAT La syntaxe de l'instruction de boucle est la suivante :
DELIMITER $$ DROP PROCEDURE IF EXISTS test_mysql_loop $$ CREATE PROCEDURE test_mysql_loop() BEGIN DECLARE x INT; DECLARE str VARCHAR ( 255 ); SET x = 1; SET str = ''; loop_label :LOOP IF x > 10 THEN LEAVE loop_label; END IF; SET x = x + 1; IF ( x MOD 2 ) THEN ITERATE loop_label; ELSE SET str = CONCAT( str, x, ',' ); END IF; END LOOP; SELECT str; END $$ DELIMITER ;
Tout d'abord, MySQL exécute des instructions
, puis évalue expression. Si expression
est évalué à FALSE
, les statements
MySQL sont exécutés à plusieurs reprises jusqu'à ce que expression
soit évalué à TRUE.
Étant donné que l'instruction de boucle REPEAT expression
vérifie les instructions
après l'exécution, l'instruction de boucle REPEAT est également appelée boucle post-test.
call test_mysql_loop();
rrreee
Résultats de sortie :Instructions LOOP, LEAVE et ITERATE
Il y a deux instructions qui vous permettent de contrôler la boucle :
L'instruction LEAVE vous permet de quitter la boucle immédiatement sans en attendant de vérifier l'état. L'instruction LEAVE fonctionne de manière similaire à l'instruction break dans d'autres langages tels que PHP, C/C++ et Java.
L'instruction ITERATE vous permet de sauter tout le code en dessous et de démarrer une nouvelle itération. L'instruction ITERATE est similaire à l'instruction continue en PHP, C/C++ et Java.
🎜MySQL vous donne également l'instruction LOOP pour exécuter à plusieurs reprises un bloc de code, avec la flexibilité supplémentaire d'utiliser des étiquettes de boucle. 🎜🎜Voici un exemple d'utilisation de l'instruction de boucle LOOP : 🎜rrreee🎜Testez-la : 🎜🎜rrreee🎜🎜🎜🎜Dans cet exemple, 🎜🎜🎜🎜 la procédure stockée ne construit que des chaînes avec des nombres pairs, par exemple 2, 4 et 6 . 🎜🎜🎜🎜Nous plaçons une étiquette de boucle loop_label avant l'instruction LOOP. 🎜🎜🎜🎜Si la valeur x est supérieure à 10, la boucle est terminée grâce à l'instruction LEAVE. 🎜🎜🎜🎜Si la valeur de x est impaire, l'instruction ITERATE ignore tout ce qui se trouve en dessous et démarre une nouvelle itération. 🎜🎜🎜🎜Si la valeur de x est un nombre pair, le bloc dans l'instruction ELSE construira une chaîne avec un nombre pair. 🎜🎜🎜🎜【Recommandations associées : 🎜tutoriel vidéo mysql🎜】🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!