집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 프로세스 제어 while, 반복, 루프 루프
이 기사에서는 mysql에 대한 관련 지식을 제공합니다. 주로 MySQL 저장 프로시저의 while, 반복 및 루프 루프에 대한 프로세스 제어를 소개합니다. 루프의 코드는 특정 횟수 또는 특정 조건이 충족될 때까지 실행됩니다. . 이제 이 사이클이 모두에게 도움이 되기를 바랍니다.
추천 학습: mysql 비디오 튜토리얼
루프 분류:
루프 제어:
leave는 break와 유사합니다. 현재 루프 종료
iterate는 continue와 유사합니다. 계속하고 이 루프를 종료하고 다음
【标签:】while 循环条件 do 循环体; end while【 标签】;
-- 创建测试表 create table user ( uid int primary_key, username varchar ( 50 ), password varchar ( 50 ) );
-- -------存储过程-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('user-',i),'123456'); set i=i+1; end while label; end $$ delimiter ; call proc16_while(10);
로 계속합니다. 저장 프로시저 구문은 고정되어 있습니다. delimiter $$ create peocedure 루프 name (parameter) start code end $$ delimiter;
루프 본문을 작성할 때 루프를 정의하기 위한 첫 번째 변수가 있어야 한다는 점에 유의하세요. 선언 i int 기본 기본값
그런 다음 dlabel:while 판단 조건 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('user-',i),'123456'); if i=5 then leave label; end if; set i=i+1; end while label; end $$ delimiter ; call proc16_while2(10);
루프를 내부적으로 중단해야 하는 경우 if 판단을 사용하고, end if 끝에 있어야 합니다.
여기에서 벗어나려면 loop, 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('user-',i),'123456'); end while label; end $$ delimiter ; call proc16_while3(10);
here에 상대적인 continue와 비교하면 iterate는
[标签:]repeat 循环体; until 条件表达式 end repeat [标签];
-- -------存储过程-循环控制-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('user-',i),'123456'); set i = i + 1; until i > insertCount end repeat label; select '循环结束'; end $$ delimiter ; call proc18_repeat(100);
를 만났을 때 다음 코드를 실행하지 않습니다. 이는 무슨 일이 있어도 한 번 실행될 루프와 비교되어 판단됩니다. 내부적으로 만족하면 바로 튀어나옵니다
[标签:] loop 循环体; if 条件表达式 then leave [标签]; end if; end loop;
-- -------存储过程-循环控制-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('user-',i),'123456'); set i = i + 1; if i > 5 then leave label; end if; end loop label; select '循环结束'; end $$ delimiter ; call proc19_loop(10);
이것과 반복의 차이점은 실행 후에는 Leave를 사용하여 루프를 빠져나오면 효과를 얻을 수 있다는 것입니다. 필요하지만 비즈니스 애플리케이션 시나리오에서는 여전히 상대적으로 일반적입니다.
추천 학습: mysql 비디오 튜토리얼
위 내용은 MySQL 프로세스 제어 while, 반복, 루프 루프의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!