Heim >Datenbank >MySQL-Tutorial >Was sind die Schleifenanweisungen in gespeicherten MySQL-Prozeduren?

Was sind die Schleifenanweisungen in gespeicherten MySQL-Prozeduren?

青灯夜游
青灯夜游Original
2022-06-20 11:51:2910433Durchsuche

Es gibt drei Arten von Schleifenanweisungen in gespeicherten MySQL-Prozeduren: 1. WHILE-Schleifenanweisung, die Syntax lautet „WHILE-Bedingungsausdruck DO-Schleifenanweisung END WHILE“; 2. REPEAT-Schleifenanweisung, die Syntax ist „REPEAT-Schleifenanweisung UNTIL-Bedingungsausdruck“. END REPEAT“; 3. LOOP-Schleifenanweisung, Syntax „[begin_label:] LOOP-Bedingung und Schleifenanweisungsliste END LOOP [end_label]“.

Was sind die Schleifenanweisungen in gespeicherten MySQL-Prozeduren?

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

MySQL bietet Schleifenanweisungen, mit denen Sie einen Abschnitt des SQL-Codes basierend auf Bedingungen wiederholt ausführen können. In MySQL gibt es drei Arten von Schleifenanweisungen: WHILE, REPEAT und LOOP.

WHILE-Schleife

Die Syntax der WHILE-Anweisung lautet wie folgt:

WHILE expression DO
   statements
END WHILE

WHILE Die Schleife prüft expression zu Beginn jeder Iteration. Wenn expression als TRUE ausgewertet wird, führt MySQL zwischen den Auswertungen von Anweisungen WHILE und END WHILEBis <code>expression als FALSE ausgewertet wird. Die WHILE-Schleife wird als Pretest-Schleife bezeichnet, da sie Ausdrücke überprüft, bevor Anweisungen ausgeführt wird. expression在每次迭代的开始。如果expression评估为TRUE,MySQL将 在评估statements之间执行  WHILEEND WHILE直到expression评估为止FALSE。WHILE 循环称为预测试循环,因为它在statements 执行之前检查表达式。

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

Was sind die Schleifenanweisungen in gespeicherten MySQL-Prozeduren?

以下是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();

输出结果:

Was sind die Schleifenanweisungen in gespeicherten MySQL-Prozeduren?

REPEAT循环

REPEAT 循环语句的语法如下:

REPEAT
 statements
UNTIL expression
END REPEAT

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

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

Das folgende Flussdiagramm veranschaulicht die WHILE-Schleifenanweisung:

Was sind die Schleifenanweisungen in gespeicherten MySQL-Prozeduren?

Was sind die Schleifenanweisungen in gespeicherten MySQL-Prozeduren?Das Folgende ist ein Beispiel für die Verwendung der WHILE-Schleifenanweisung in einer gespeicherten Prozedur:

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 ;

In der oben genannten gespeicherten Prozedur test_mysql_while_loop:

Zuerst erstellen wir die Zeichenfolge str wiederholt, bis die x-Variable Der Wert von ist größer als 5.

Was sind die Schleifenanweisungen in gespeicherten MySQL-Prozeduren?

Dann verwenden wir eine SELECT-Anweisung, um die endgültige Zeichenfolge anzuzeigen.

Bitte beachten Sie, dass der Standardwert NULL ist, wenn wir die x-Variable nicht initialisieren. Daher ist die Bedingung in der WHILE-Schleifenanweisung immer TRUE und es entsteht eine Endlosschleife, was unerwünscht ist.

Testen wir die gespeicherte Prozedur test_mysql_while_loop:

CALL mysql_test_repeat_loop();

Ausgabeergebnis:
  • Was sind die Schleifenanweisungen in gespeicherten MySQL-Prozeduren?

  • REPEAT-Schleife

REPEAT Die Syntax der Schleifenanweisung lautet wie folgt:

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 ;

Zuerst führt MySQL Anweisungen aus, und wertet dann expression aus. Wenn expression als FALSE ausgewertet wird, werden MySQL-Anweisungen wiederholt ausgeführt, bis expression als TRUE ausgewertet wird.

Da die REPEAT-Schleifenanweisung expression statements nach der Ausführung prüft, wird die REPEAT-Schleifenanweisung auch als Post-Test-Schleife bezeichnet.

Das folgende Flussdiagramm veranschaulicht die REPEAT-Schleifenanweisung:

Was sind die Schleifenanweisungen in gespeicherten MySQL-Prozeduren?

Wir können test_mysql_while_loop die WHILE-Schleifenanweisung verwenden, um die obige gespeicherte Prozedur mithilfe der REPEAT-Schleifenanweisung neu zu schreiben:
    call test_mysql_loop();
  • Beachten Sie, dass darin kein Semikolon (;) enthalten ist der UNTIL-Ausdruck.

    rrreee

    Ausgabeergebnisse:
  • LOOP-, LEAVE- und ITERATE-Anweisungen

  • Es gibt zwei Anweisungen, mit denen Sie die Schleife steuern können:

  • Mit der LEAVE-Anweisung können Sie die Schleife sofort verlassen, ohne Ich warte darauf, den Zustand zu überprüfen. Die LEAVE-Anweisung funktioniert ähnlich wie die break-Anweisung in anderen Sprachen wie PHP, C/C++ und Java.

Mit der ITERATE-Anweisung können Sie den gesamten Code darunter überspringen und eine neue Iteration starten. Die ITERATE-Anweisung ähnelt der continue-Anweisung in PHP, C/C++ und Java.

🎜MySQL bietet Ihnen außerdem die LOOP-Anweisung zum wiederholten Ausführen eines Codeblocks mit der zusätzlichen Flexibilität der Verwendung von Schleifenbezeichnungen. 🎜🎜Hier ist ein Beispiel für die Verwendung der LOOP-Schleifenanweisung: 🎜rrreee🎜Testen Sie es: 🎜🎜rrreee🎜🎜🎜🎜In diesem Beispiel 🎜🎜🎜🎜 erstellt die gespeicherte Prozedur nur Zeichenfolgen mit geraden Zahlen, zum Beispiel 2, 4 und 6 . 🎜🎜🎜🎜Wir platzieren eine Schleifenbezeichnung loop_label vor der LOOP-Anweisung. 🎜🎜🎜🎜Wenn der Wert x größer als 10 ist, wird die Schleife aufgrund der LEAVE-Anweisung beendet. 🎜🎜🎜🎜Wenn der Wert von x ungerade ist, ignoriert die ITERATE-Anweisung alles darunter und startet eine neue Iteration. 🎜🎜🎜🎜Wenn der Wert von x eine gerade Zahl ist, erstellt der Block in der ELSE-Anweisung eine Zeichenfolge mit einer geraden Zahl. 🎜🎜🎜🎜【Verwandte Empfehlungen: 🎜MySQL-Video-Tutorial🎜】🎜

Das obige ist der detaillierte Inhalt vonWas sind die Schleifenanweisungen in gespeicherten MySQL-Prozeduren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn