mysql 저장 프로시저에는 세 가지 유형의 루프 문이 있습니다. 1. WHILE 루프 문, 구문은 "WHILE 조건식 DO 루프 문 END WHILE"입니다. 2. REPEAT 루프 문, 구문은 "REPEAT 루프 문 UNTIL 조건식"입니다. END REPEAT"; 3. LOOP 루프 문, 구문 "[begin_label:] LOOP 조건 및 루프 문 목록 END LOOP [end_label]".
이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.
MySQL은 조건에 따라 SQL 코드 섹션을 반복적으로 실행할 수 있는 루프 문을 제공합니다. MySQL에는 WHILE, REPEAT 및 LOOP의 세 가지 유형의 루프 문이 있습니다.
WHILE 루프
WHILE 문의 구문은 다음과 같습니다.
WHILE expression DO statements END WHILE
WHILE 루프는 각 반복이 시작될 때 표현식
을 확인합니다. expression
이 TRUE
로 평가되면 MySQL은 문
평가 사이에 WHILE
, END WHILE<code>표현식
이 FALSE
로 평가될 때까지입니다. WHILE 루프는 문장
이 실행되기 전에 표현식을 확인하기 때문에 사전 테스트 루프라고 합니다. 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
다음은 저장 프로시저에서 WHILE 루프 문을 사용하는 예입니다.
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 ;
test_mysql_while_loop 위의 저장 프로시저에서:
먼저 문자열이 나올 때까지 반복적으로 str 문자열을 빌드합니다. x 변수 값이 5보다 큽니다.
그런 다음 SELECT 문을 사용하여 최종 문자열을 표시합니다.x 변수를 초기화하지 않으면 기본값은 NULL입니다. 따라서 WHILE 루프 문의 조건은 항상 TRUE가 되며 원하지 않는 무한 루프가 발생하게 됩니다.
test_mysql_while_loop 저장 프로시저를 테스트해 보겠습니다.CALL mysql_test_repeat_loop();출력 결과:
REPEAT loop
REPEAT 루프 문의 구문은 다음과 같습니다.
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 ;
먼저 MySQL은 문장
을 실행하고, 그런 다음 표현식을 평가합니다. expression
이 FALSE
로 평가되면 expression
이 TRUE로 평가될 때까지 MySQL statements
가 반복적으로 실행됩니다.
REPEAT 루프 문 표현
은 실행 후 문
을 확인하기 때문에 REPEAT 루프 문을 테스트 후 루프라고도 합니다.
call test_mysql_loop();
rrreee
출력 결과:LOOP, LEAVE 및 ITERATE 문
루프를 제어할 수 있는 두 가지 문이 있습니다.
LEAVE 문을 사용하면 루프를 즉시 종료할 수 있습니다. 상태를 확인하기 위해 기다리고 있습니다. LEAVE 문은 PHP, C/C++, Java 등 다른 언어의 break 문과 유사하게 작동합니다.
ITERATE 문을 사용하면 아래의 전체 코드를 건너뛰고 새 반복을 시작할 수 있습니다. ITERATE 문은 PHP, C/C++ 및 Java의 continue 문과 유사합니다.
🎜MySQL은 또한 루프 레이블을 사용할 수 있는 유연성을 추가하여 코드 블록을 반복적으로 실행할 수 있는 LOOP 문을 제공합니다. 🎜🎜다음은 LOOP 루프 문을 사용하는 예입니다. 🎜rrreee🎜테스트해 보세요. 🎜🎜rrreee🎜🎜🎜🎜이 예에서 🎜🎜🎜🎜 저장 프로시저는 짝수가 있는 문자열만 구성합니다(예: 2, 4 및 6 . 🎜🎜🎜🎜 LOOP 문 앞에 루프 레이블 loop_label을 배치합니다. 🎜🎜🎜🎜x 값이 10보다 크면 LEAVE 문으로 인해 루프가 종료됩니다. 🎜🎜🎜🎜x 값이 홀수이면 ITERATE 문은 그 아래의 모든 항목을 무시하고 새 반복을 시작합니다. 🎜🎜🎜🎜x 값이 짝수인 경우 ELSE 문의 블록은 짝수로 문자열을 작성합니다. 🎜🎜🎜🎜【관련 추천: 🎜mysql 비디오 튜토리얼🎜】🎜위 내용은 mysql 저장 프로시저의 루프 문은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!