Analyse der Verwendung von Schleifenanweisungen (WHILE, REPEAT und LOOP) in gespeicherten MySQL-Prozeduren

Analyse der Verwendung von Schleifenanweisungen (WHILE, REPEAT und LOOP) in gespeicherten MySQL-Prozeduren

Dieser Artikel veranschaulicht anhand von Beispielen die Verwendung von Schleifenanweisungen (WHILE, REPEAT und LOOP) in gespeicherten MySQL-Prozeduren. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

MySQL bietet Schleifenanweisungen, mit denen wir einen SQL-Codeblock basierend auf Bedingungen wiederholt ausführen können. Es gibt drei Schleifenanweisungen: WHILE, REPEAT und LOOP. Sehen wir sie uns einzeln an. Schauen wir uns zunächst die Syntax der WHILE-Anweisung an:

WHILE-Ausdruck DO
  Aussagen
ENDE WÄHREND

Die WHILE-Schleife überprüft den Ausdruck zu Beginn jeder Iteration. Wenn expressionevaluates TRUE ist, führt MySQL die Anweisungen zwischen WHILE und END WHILE aus, bis expressionevaluates FALSE ist. Eine WHILE-Schleife wird als Vortest-Bedingungsschleife bezeichnet, da sie den Ausdruck der Anweisung immer prüft, bevor sie ausgeführt wird. Schauen wir uns das Flussdiagramm an:

Versuchen wir anschließend, die WHILE-Schleifenanweisung in der gespeicherten Prozedur zu verwenden. Schauen wir uns ein Beispiel an:

TRENNUNGSZEICHEN $$
 DROP-VERFAHREN, WENN EXISTIERT test_mysql_while_loop$$
 PROZEDUR ERSTELLEN test_mysql_while_loop()
 BEGINNEN
 DECLARE x INT;
 DECLARE str VARCHAR(255);
 Setze x = 1;
 SETZEN Sie str = '';
 WÄHREND x <= 5 DO
 SET str = CONCAT(str,x,',');
 Setze x = x + 1; 
 ENDE WÄHREND;
 Wählen Sie str aus.
 ENDE$$
TRENNUNGSZEICHEN ;

In der oben beschriebenen gespeicherten Prozedur test_mysql_while_loop besteht ihre Funktion darin, die Zeichenfolge str wiederholt zu erstellen, bis der Wert der Variablen x größer als 5 ist, und dann die select-Anweisung zu verwenden, um die endgültige Zeichenfolge anzuzeigen. Wir sollten beachten, dass der Standardwert NULL ist, wenn der Wert der Variable x nicht initialisiert ist. Daher ist die Bedingung in der WHILE-Schleifen-Anweisung immer TRUE und wir haben eine unbestimmte Schleife, die unvorhersehbar ist. Lassen Sie uns ohne weitere Umschweife die gespeicherte Prozedur test_mysql_while_loopstored aufrufen:

Rufen Sie test_mysql_while_loop() auf;

Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse:

mysql> RUFEN SIE test_mysql_while_loop();
+------------+
| str |
+------------+
| 1,2,3,4,5, |
+------------+
1 Reihe im Set
Abfrage OK, 0 Zeilen betroffen

Schauen wir uns nun die grammatikalische Struktur der REPEAT-Schleifenanweisung an:

WIEDERHOLEN
 aussagen;
UNTIL-Ausdruck
ENDE WIEDERHOLUNG

Das obige SQL wird zuerst von MySQL ausgeführt. Danach wertet MySQL den Ausdruck aus. Wenn der Ausdruck FALSE ist, führt MySQL die Anweisung wiederholt aus, bis der Ausdruck TRUE ist. Da die REPEAT-Schleifen-Anweisung Ausdrücke nach der Ausführung von Anweisungen prüft, wird die REPEAT-Schleifen-Anweisung auch als Test-After-Schleife bezeichnet. Schauen wir uns das Flussdiagramm an:

Wenn wir fertig sind, verwenden wir die REPEAT-Schleifenanweisung, um die gespeicherte Prozedur test_mysql_while_loop neu zu schreiben:

TRENNUNGSZEICHEN $$
 DROP-VERFAHREN, WENN EXISTIERT mysql_test_repeat_loop$$
 PROZEDUR ERSTELLEN mysql_test_repeat_loop()
 BEGINNEN
 DECLARE x INT;
 DECLARE str VARCHAR(255);
 Setze x = 1;
    SETZEN Sie str = '';
 WIEDERHOLEN
 SET str = CONCAT(str,x,',');
 Setze x = x + 1;
    BIS x > 5
    ENDE WIEDERHOLUNG;
    Wählen Sie str aus.
 ENDE$$
TRENNUNGSZEICHEN ;

Wir sollten beachten, dass im UNTIL-Ausdruck kein Semikolon (;) vorhanden ist. Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse:

mysql> RUFEN Sie mysql_test_repeat_loop();
+------------+
| str |
+------------+
| 1,2,3,4,5, |
+------------+
1 Reihe im Set
Abfrage OK, 0 Zeilen betroffen

Schauen wir uns abschließend ein Beispiel für die Verwendung der LOOP-Anweisung an:

PROZEDUR ERSTELLEN test_mysql_loop()
 BEGINNEN
 DECLARE x INT;
    DECLARE str VARCHAR(255);
 Setze x = 1;
    SETZEN Sie str = '';
 loop_label: SCHLEIFE
 WENN x > 10 DANN 
 LEAVE-Schleifenbezeichnung;
 ENDE, WENN;
 Setze x = x + 1;
 WENN (x mod 2) DANN
   ITERATE Schleifenbezeichnung;
 ANDERS
  SET str = CONCAT(str,x,',');
 ENDE, WENN;
  ENDE DER SCHLEIFE;
  Wählen Sie str aus.
ENDE;

Die spezifischen Funktionen des obigen SQL sind wie folgt:

  • Die obige gespeicherte Prozedur erstellt nur Zeichenfolgen mit einer geraden Anzahl von Zeichen, beispielsweise 2, 4, 6 usw.
  • Platzieren Sie vor der LOOP-Anweisung eine Schleifenbezeichnung loop_label.
  • Wenn der Wert von x größer als 10 ist, wird die Schleife aufgrund der LEAVE-Anweisung beendet.
  • Wenn der Wert von x eine ungerade Zahl ist, ignoriert die ITERATE-Anweisung alles darunter und startet eine neue Iteration.
  • Wenn der Wert von x gerade ist, erstellt der Block in der ELSE-Anweisung die Zeichenfolge mit einer geraden Zahl.

Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse:

mysql> RUFEN SIE test_mysql_loop();
+-------------+
| str |
+-------------+
| 2,4,6,8,10, |
+-------------+
1 Reihe im Set
Abfrage OK, 0 Zeilen betroffen

Schauen wir uns nun die beiden Schlüsselwörter für den Regelkreis an:

  • Die LEAVE-Anweisung wird verwendet, um die Schleife sofort zu verlassen, ohne auf die Überprüfung der Bedingung zu warten. Das Funktionsprinzip der LEAVE-Anweisung ähnelt der Break-Anweisung in anderen Sprachen wie PHP, C/C++, Java usw.
  • Mit der ITERATE-Anweisung können Sie den gesamten restlichen Code überspringen und eine neue Iteration starten. Die ITERATE-Anweisung ähnelt der Continue-Anweisung in PHP, C/C++, Java usw.

Okay, das ist alles zu diesem Eintrag.

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „Kenntnisse zu gespeicherten MySQL-Prozeduren“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „Kenntnisse zu MySQL-Protokollvorgängen“, „Zusammenfassung der Kenntnisse zu MySQL-Transaktionsvorgängen“ und „Zusammenfassung der Kenntnisse zu MySQL-Datenbanksperren“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Codebeispiele für MySQL-Batchoperationsanweisungen „Select“, „Insert“ und „Update“
  • Python MySQLdb-Parameterübergabemethode beim Ausführen von SQL-Anweisungen
  • Detaillierte Zusammenfassung der MySQL-SQL-Anweisungen zum Erstellen von Tabellen
  • Sammlung von MySQL-Fuzzy-Abfrageanweisungen
  • Erweitert und Zusammenfassung häufig verwendeter SQL-Anweisungen in MySQL-Datenbanken
  • Zusammenfassung grundlegender SQL-Anweisungen in der MySQL-Datenbank
  • Verstehen Sie einfach die Schreib- und Ausführungsreihenfolge von MySQL-Anweisungen

<<:  Zusammenfassung der Konfigurationsmethoden für Linux-Umgebungsvariablen (Unterschiede zwischen .bash_profile und .bashrc)

>>:  VUE führt die Implementierung der Verwendung von G2-Diagrammen ein

Artikel empfehlen

React-Prinzipien erklärt

Inhaltsverzeichnis 1. setState() Beschreibung 1.1...

Ubuntu 20.04 stellt eine Verbindung zu WLAN her (2 Methoden)

Ich habe vor Kurzem Ubuntu 20.04 installiert und ...

Vue.js implementiert eine Bildwechselfunktion

In diesem Artikel wird der spezifische Code von V...

Vue implementiert eine Formularvalidierungsfunktion

Dieser Artikel beschreibt hauptsächlich, wie die ...

MySQL-Optimierung: Join statt Unterabfrage verwenden

Verwenden Sie JOIN anstelle von Unterabfragen MyS...

Detaillierte Erklärung der Verwendung des Linux-Befehls „tee“

Der Befehl tee wird hauptsächlich verwendet, um d...

Vue implementiert Karussell-Animation

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung zur Verwendung der Linux-Umleitung

Ich glaube, dass jeder manchmal Daten kopieren un...

So erstellen Sie manuell ein neues Image mit Docker

In diesem Artikel wird die Methode zum manuellen ...

Zusammenfassung der Wissenspunkte zu den Linux-Befehlen ps und pstree

Der ps-Befehl in Linux ist die Abkürzung für „Pro...

Erläuterung zu JavaScript-Anti-Shake und -Throttling

Inhaltsverzeichnis Stabilisierung Drosselung Zusa...

So stellen Sie LNMP und phpMyAdmin in Docker bereit

Umweltvorbereitung: Stellen Sie lnmp auf einem Ho...