Maison > base de données > tutoriel mysql > le corps du texte

Contrôle de processus MySQL pendant, répétition, boucle en boucle

WBOY
Libérer: 2022-08-09 20:22:12
avant
1905 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur mysql Il présente principalement le contrôle de processus des procédures stockées MySQL pendant, les répétitions et les boucles. Le code dans la boucle s'exécutera un nombre spécifique de fois ou jusqu'à ce qu'une condition spécifique soit remplie. Le cycle se termine à ce moment-là. J'espère que cela sera utile à tout le monde.

Contrôle de processus MySQL pendant, répétition, boucle en boucle

Apprentissage recommandé : Tutoriel vidéo mysql

Avant-propos

  • Une boucle est un morceau de code qui n'apparaît qu'une seule fois dans le programme, mais peut s'exécuter plusieurs fois de manière continue.
  • Le code dans la boucle s'exécutera un nombre spécifique de fois, ou la boucle se terminera lorsqu'une condition spécifique sera remplie.

Classification de boucle :

  • while
  • repeat
  • loop

Contrôle de boucle :

leave est similaire à break, saute, mettre fin à la boucle actuelle La boucle

iterate est similaire à continue, continue, termine cette boucle et continue à la suivante

while loop

【标签:】while 循环条件 do
循环体;
end while【 标签】;
Copier après la connexion
-- 创建测试表
create table user (
uid int primary_key,
username varchar ( 50 ),
password varchar ( 50 )
);
Copier après la connexion
-- -------存储过程-while
delimiter $$
create procedure proc16_while1(in insertcount int)
begin
declare i int default 1;
label:while i<=insertcount do
insert into user(uid,username,`password`) values(i,concat(&#39;user-&#39;,i),&#39;123456&#39;);
set i=i+1;
end while label;
end $$
delimiter ;
call proc16_while(10);
Copier après la connexion

La syntaxe de la procédure stockée est corrigée : delimiter $$ create peocedure loop nom (paramètre) début code fin $$ délimiteur ;

Notez que lors de l'écriture du corps de la boucle, vous devez avoir la première variable pour définir la boucle, utilisez declare i int default default value

Puis dlabel :while jugement condition do loop Body end while label; end && must have

-- -------存储过程-while + leave
truncate table user;
delimiter $$
create procedure proc16_while2(in insertcount int)
begin
declare i int default 1;
label:while i<=insertcount do
insert into user(uid,username,`password`) values(i,concat(&#39;user-&#39;,i),&#39;123456&#39;);
if i=5 then leave label;
end if;
set i=i+1;
end while label;
end $$
delimiter ;
call proc16_while2(10);
Copier après la connexion

Si vous avez besoin de sortir de la boucle en interne, utilisez if jugement, mais vous avez besoin de end if à la fin

quitter ici pour sortir du boucle, comparé à break

-- -------存储过程-while+iterate
truncate table user;
delimiter $$
create procedure proc16_while3(in insertcount int)
begin
declare i int default 1;
label:while i<=insertcount do
set i=i+1;
if i=5 then iterate label;
end if;
insert into user(uid,username,`password`) values(i,concat(&#39;user-&#39;,i),&#39;123456&#39;);
end while label;
end $$
delimiter ;
call proc16_while3(10);
Copier après la connexion

ici Par rapport à continuer, iterate n'exécute pas le code suivant lorsqu'il rencontre

repeat loop

[标签:]repeat
循环体;
until 条件表达式
end repeat [标签];
Copier après la connexion
-- -------存储过程-循环控制-repeat
use mysql7_procedure;
truncate table user;
delimiter $$
create procedure proc18_repeat(in insertCount int)
begin
declare i int default 1;
label:repeat
insert into user(uid, username, password) values(i,concat(&#39;user-&#39;,i),&#39;123456&#39;);
set i = i + 1;
until i > insertCount
end repeat label;
select &#39;循环结束&#39;;
end $$
delimiter ;
call proc18_repeat(100);
Copier après la connexion

Ceci est comparé à une boucle qui sera exécutée une fois quoi qu'il arrive, puis elle est jugée en interne, s'il est satisfait, il sortira directement

boucle

[标签:] loop
循环体;
if 条件表达式 then
leave [标签];
end if;
end loop;
Copier après la connexion
-- -------存储过程-循环控制-loop
truncate table user;

delimiter $$
create procedure proc19_loop(in insertCount int)
begin
declare i int default 1;
label:loop
insert into user(uid, username, password) values(i,concat(&#39;user-&#39;,i),&#39;123456&#39;);
set i = i + 1;
if i > 5
then
leave label;
end if;
end loop label;
select &#39;循环结束&#39;;
end $$
delimiter ;
call proc19_loop(10);
Copier après la connexion

La différence entre ceci et la répétition est qu'après l'exécution, utilisez Leave pour sortir de la boucle. Peu importe celui utilisé, nous pouvons obtenir l'effet. nous en avons besoin, mais dans les scénarios d'applications métier, cela reste relativement courant.

Apprentissage recommandé : 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!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!