>  기사  >  데이터 베이스  >  mysql 저장 프로시저의 루프 문은 무엇입니까?

mysql 저장 프로시저의 루프 문은 무엇입니까?

青灯夜游
青灯夜游원래의
2022-06-20 11:51:2910356검색

mysql 저장 프로시저에는 세 가지 유형의 루프 문이 있습니다. 1. WHILE 루프 문, 구문은 "WHILE 조건식 DO 루프 문 END WHILE"입니다. 2. REPEAT 루프 문, 구문은 "REPEAT 루프 문 UNTIL 조건식"입니다. END REPEAT"; 3. LOOP 루프 문, 구문 "[begin_label:] LOOP 조건 및 루프 문 목록 END LOOP [end_label]".

mysql 저장 프로시저의 루프 문은 무엇입니까?

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

MySQL은 조건에 따라 SQL 코드 섹션을 반복적으로 실행할 수 있는 루프 문을 제공합니다. MySQL에는 WHILE, REPEAT 및 LOOP의 세 가지 유형의 루프 문이 있습니다.

WHILE 루프

WHILE 문의 구문은 다음과 같습니다.

WHILE expression DO
   statements
END WHILE

WHILE 루프는 각 반복이 시작될 때 표현식을 확인합니다. expressionTRUE로 평가되면 MySQL은 평가 사이에 WHILE, END WHILE<code>표현식FALSE로 평가될 때까지입니다. WHILE 루프는 문장이 실행되기 전에 표현식을 확인하기 때문에 사전 테스트 루프라고 합니다. expression在每次迭代的开始。如果expression评估为TRUE,MySQL将 在评估statements之间执行  WHILEEND WHILE直到expression评估为止FALSE。WHILE 循环称为预测试循环,因为它在statements 执行之前检查表达式。

以下流程图说明了WHILE循环语句:

mysql 저장 프로시저의 루프 문은 무엇입니까?

以下是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 = &#39;&#39;;
	WHILE x <= 5 DO
		SET str = CONCAT( str, x, &#39;,&#39; );
		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();

输出结果:

mysql 저장 프로시저의 루프 문은 무엇입니까?

REPEAT循环

REPEAT 循环语句的语法如下:

REPEAT
 statements
UNTIL expression
END REPEAT

首先,MySQL执行statements,然后评估expression。如果expression评估为FALSE,则MySQL statements 重复执行直到expression 评估为止TRUE。

因为REPEAT 循环语句expression 在执行后检查statements

다음 순서도는 WHILE 루프 문을 보여줍니다.

mysql 저장 프로시저의 루프 문은 무엇입니까?

mysql 저장 프로시저의 루프 문은 무엇입니까?다음은 저장 프로시저에서 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 = &#39;&#39;;
	REPEAT
		SET str = CONCAT( str, x, &#39;,&#39; );
		SET x = x + 1;
	UNTIL x > 5 
	END REPEAT;
	SELECT str;
END $$
DELIMITER ;

test_mysql_while_loop 위의 저장 프로시저에서:

먼저 문자열이 나올 때까지 반복적으로 str 문자열을 빌드합니다. x 변수 값이 5보다 큽니다.

mysql 저장 프로시저의 루프 문은 무엇입니까?

그런 다음 SELECT 문을 사용하여 최종 문자열을 표시합니다.

x 변수를 초기화하지 않으면 기본값은 NULL입니다. 따라서 WHILE 루프 문의 조건은 항상 TRUE가 되며 원하지 않는 무한 루프가 발생하게 됩니다.

test_mysql_while_loop 저장 프로시저를 테스트해 보겠습니다.

CALL mysql_test_repeat_loop();

출력 결과:
  • mysql 저장 프로시저의 루프 문은 무엇입니까?

  • 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 = &#39;&#39;;
  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, &#39;,&#39; );
    END IF;
  END LOOP;
  SELECT str;
END $$
DELIMITER ;

먼저 MySQL은 문장을 실행하고, 그런 다음 표현식을 평가합니다. expressionFALSE로 평가되면 expression이 TRUE로 평가될 때까지 MySQL statements가 반복적으로 실행됩니다.

REPEAT 루프 문 표현은 실행 후 을 확인하기 때문에 REPEAT 루프 문을 테스트 후 루프라고도 합니다.

다음 순서도는 REPEAT 루프 문을 보여줍니다.

mysql 저장 프로시저의 루프 문은 무엇입니까?

test_mysql_while_loop에서는 WHILE 루프 문을 사용하여 REPEAT 루프 문을 사용하여 위의 저장 프로시저를 다시 작성할 수 있습니다.
    call test_mysql_loop();
  • 세미콜론(;)이 없다는 점에 유의하세요. UNTIL 표현식.

    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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.