Gespeicherte MySQL-Prozeduren, d. h. eine Zusammenfassung allgemeiner logischer Wissenspunkte

Gespeicherte MySQL-Prozeduren, d. h. eine Zusammenfassung allgemeiner logischer Wissenspunkte

Gespeicherte MySQL-Prozedur

1. Erstellen Sie die Syntax (Format) der gespeicherten Prozedur

TRENNUNGSZEICHEN $
CREATE PROCEDURE gespeicherter Prozedurname A (IN eingehender Parametername a INT, IN eingehender Parametername b VARCHAR(20), OUT zurückgegebener Parametername c INT)
BEGINNEN
  Inhalt..........
ENDE $

Analyse:

  • IN stellt den eingehenden Parameter dar, definiert den eingehenden Parameternamen und wird vom eingehenden Parametertyp gefolgt (INT, VARCHAR, DOUBLE, .....)
  • OUT stellt die Daten dar, die nach der Ausführung der gespeicherten Prozedur zurückgegeben werden. Definieren Sie den Parameternamen und geben Sie anschließend den Parametertyp an (INT, VARCHAR, DOUBLE, ...).
  • INOUT bedeutet, dass es übergeben oder zurückgegeben werden kann. Definieren Sie den Parameternamen und geben Sie anschließend den Parametertyp an (INT, VARCHAR, DOUBLE, .....).

2. Spezifische Syntax und Logik in gespeicherten Prozeduren

A. Definieren Sie die Variablensyntax:

DECLARE Variablenname ein Parametertyp (INT, VARCHAR (20), BOOLEAN, .....) [DEFAULT NULL];

Hinweis: Sie können DEFAULT NULL nach dem Parametertyp hinzufügen, um den Anfangswert festzulegen.

B. Variablenzuweisung:

Methode 1 (direkte Zuweisung von Werten zu Variablen):

SET definierte Variable a = NEW();

Methode 2 (das Ergebnis der SQL-Abfrage wird direkt der Variable zugewiesen):

SELECT `student`.age INTO definierte Variable a FROM `student` WHERE...........

Methode 3 (die Ergebnisse der SQL-Abfrage werden direkt mehreren Variablen zugewiesen):

SELECT `student`.name AS definierte Variable a, `student`.age AS definierte Variable b INTO definierte Variable a, definierte Variable b FROM `student` ...............

c. Logisches Denken:

#WENN-Urteil: 

         WENN bedingte Anweisung (3>5) DANN
        Ausführen, wenn die Bedingung WAHR ist.........;
      ENDE, WENN;
  #IF ELSE-Urteil:
      WENN Bedingung (a>0) DANN
     Ausführen, wenn die Bedingung (a>0) ist........;
      SONST WENN Bedingung (a<0) DANN
         Ausführen, wenn die Bedingung (a<0) ist.......;
      ANDERS
         Andere Hinrichtungen.......;
      ENDE, WENN;

D. Cursor, (LOOP) Schleife:

#Beispiel. Einzelne Cursorschleife: create procedure my_procedure() -- Eine gespeicherte Prozedur erstellen begin -- Eine gespeicherte Prozedur starten declare my_id varchar(32); -- Benutzerdefinierte Variable 1
deklariere my_name varchar(50); – Benutzerdefinierte Variable 2
DECLARE done INT DEFAULT FALSE; – Benutzerdefinierte Steuerungscursor-Schleifenvariable, Standardwert: false

DECLARE cur CURSOR FOR (SELECT id, name FROM t_people); -- Den Cursor definieren und das Ergebnisset eingeben DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- Die Kontrollvariable an den Cursor binden, und die Cursorschleife wird automatisch auf true gesetzt
 
OPEN cur; -- Öffnen Sie den Cursor posLoop: LOOP -- Starten Sie den Schleifenkörper, myLoop ist der benutzerdefinierte Schleifenname, und verwenden Sie FETCH cur in my_id, my_name, um die Schleife zu beenden; -- Weisen Sie der benutzerdefinierten Variablen 12 die Datensequenz der aktuellen Zeile zu, die vom Cursor gelesen wird.
    WENN fertig, DANN – Bestimmen Sie, ob die Schleife fortgesetzt werden soll. LEAVE posLoop; – Beenden Sie die Schleife. END IF;
  -- Um das Gewünschte zu tun, können Sie benutzerdefinierte Variablen direkt in SQL verwenden UPDATE t_user SET c_name = my_name WHERE id = my_id and rtrim(ltrim(c_name)) = ''; -- Entfernen Sie Leerzeichen links und rechts COMMIT; -- Führen Sie ein Commit für die Transaktion aus END LOOP posLoop; -- Benutzerdefinierte Schleife beenden CLOSE cur; -- Schließen Sie den Cursor END; -- Beenden Sie die gespeicherte Prozedur
#Beispiel. Mehrcursor-Schleife: create procedure my_procedure() -- Eine gespeicherte Prozedur erstellen begin -- Eine gespeicherte Prozedur starten declare my_id varchar(32); -- Benutzerdefinierte Variable 1
deklariere my_name varchar(50); – Benutzerdefinierte Variable 2
DECLARE done INT DEFAULT FALSE; – Benutzerdefinierte Steuerungscursor-Schleifenvariable, Standardwert: false

DECLARE cur_1 CURSOR FOR ( SELECT id, name FROM t_people ); -- Definieren Sie den Cursor und geben Sie das Ergebnisset ein. DECLARE cur_2 CURSOR FOR ( SELECT id_2, name_2 FROM t_people_2); -- Definieren Sie den Cursor und geben Sie das Ergebnisset ein. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- Binden Sie die Steuervariable an den Cursor. Die Cursor-Schleife wird automatisch auf „true“ gesetzt, wenn sie endet.
 
OPEN cur_1; -- Cursor posLoop öffnen: LOOP -- Schleifenkörper starten, myLoop ist der benutzerdefinierte Schleifenname, und mit FETCH cur_1 in my_id, my_name die Schleife beenden; -- Die vom Cursor gelesene Datensequenz der aktuellen Zeile der benutzerdefinierten Variable 12 zuweisen
    WENN fertig, DANN – Bestimmen Sie, ob die Schleife fortgesetzt werden soll. LEAVE posLoop; – Beenden Sie die Schleife. END IF;
  -- Um das zu tun, was Sie tun möchten, verwenden Sie einfach die benutzerdefinierte Variable in SQL UPDATE ..........; --Spezifische Operationen, die Sie ausführen möchten END LOOP posLoop; --Beenden Sie den benutzerdefinierten Schleifenkörper CLOSE cur_1; --Schließen Sie den Cursor SET done = FALSE; --Denn wenn der erste Cursor durchlaufen wird, wird sein Wert vom Handler auf TRUE gesetzt. Wenn Sie set nicht verwenden, um ihn auf FALSE zu setzen, wird der zweite Cursor nicht durchlaufen. (Am besten verwenden Sie diese Anweisung vor jeder Operation zum Öffnen eines Cursors, um sicherzustellen, dass der Cursor tatsächlich durchlaufen werden kann.)
 
 OPEN cur_2; -- Cursor posLoop_2 öffnen: LOOP -- Schleifenkörper starten, myLoop ist der benutzerdefinierte Schleifenname, und mit FETCH cur_2 in my_id, my_name die Schleife beenden; -- Die vom Cursor gelesene Datensequenz der aktuellen Zeile der benutzerdefinierten Variable 12 zuweisen
    WENN fertig, DANN – Bestimmen Sie, ob die Schleife fortgesetzt werden soll. LEAVE posLoop_2; – Beenden Sie die Schleife. END IF;
  -- Um das Gewünschte zu tun, können Sie die benutzerdefinierte Variable direkt in SQL verwenden INSERT ..........; --Die spezifische Operation, die Sie ausführen möchten END LOOP posLoop_2; --Beenden Sie den benutzerdefinierten Schleifenkörper CLOSE cur_2; --Schließen Sie den Cursor END; --Beenden Sie die gespeicherte Prozedur

3. Aufrufen gespeicherter Prozeduren

#Rufen Sie eine gespeicherte Prozedur auf, die keinen Rückgabewert hat. CALL: Name der gespeicherten Prozedur (Parameter...);

#Eine gespeicherte Prozedur mit einem Rückgabewert aufrufen (den Rückgabewert abrufen)

CALL-Name der gespeicherten Prozedur (@aaa);
WÄHLEN SIE @aaa;

4. Löschen Sie die gespeicherte Prozedur

DROP PROCEDURE Name der gespeicherten Prozedur;

5. Hinweise

Das Semikolon (;) in der gespeicherten Prozedur ist sehr wichtig und sollte nicht weggelassen werden.

Das könnte Sie auch interessieren:
  • Tiefgreifendes Verständnis der logischen Architektur von MySQL
  • MySQL Advanced Learning Notes (Teil 3): Einführung in die logische Architektur von MySQL, detaillierte Erläuterung der MySQL-Speicher-Engine
  • Detaillierte Erläuterung des MySQL-Ausführungsprinzips, der logischen Schichtung und der Änderung der Datenbankverarbeitungs-Engine
  • Detaillierte Erläuterung der logischen Architektur von MySQL
  • Detaillierte Erklärung, wie Sie die Fallstricke beim Ersetzen von logischem SQL in MySQL vermeiden können
  • Mit PHP auf die MySql-Datenbank zugreifen - logische Operationen und Beispiele zum Hinzufügen, Löschen, Ändern und Prüfen
  • Logische Beurteilung und bedingte Kontrolle von gespeicherten MySQL-Prozeduren
  • MySQL verwendet frm-Dateien und ibd-Dateien, um Tabellendaten wiederherzustellen
  • MySQL verwendet Binlog-Protokolle zur Implementierung der Datenwiederherstellung
  • MySQL-Schnellwiederherstellungslösung basierend auf dem Zeitpunkt
  • Implementierung der MySQL5.7 mysqldump-Sicherung und -Wiederherstellung
  • Zusammenfassung der Tests für logische MySQL-Sicherungen und -Wiederherstellungen

<<:  Beispiel für die Konvertierung eines flachen JavaScript-Arrays in eine Baumstruktur

>>:  Einrichten von VMware vSphere in VMware Workstation (Grafisches Tutorial)

Artikel empfehlen

Erstellen eines Dateisystems für ARM-Entwicklungsboards unter Linux

1. Bitte laden Sie den Busybox-Quellcode online h...

So verwenden Sie Port 80 in Tomcat unter Linux

Anwendungsszenario In vielen Fällen installieren ...

Praktisches Tutorial zum Ändern des MySQL-Zeichensatzes

Vorwort: In MySQL unterstützt das System viele Ze...

HTML-Grundlagen-Zusammenfassungsempfehlung (Textformat)

HTML-Tags zur Textformatierung 標簽 描述 <b> 定義...

Einführung in die MySQL-Operatoren <> und <=>

<> Operator Funktion: Zeigt an, dass es ung...

Detaillierte Erklärung der Funktion und Verwendung der KeepAlive-Komponente in Vue

Vorwort Während des Vorstellungsgesprächs erwähne...

CSS-Ansichtsfenstereinheiten für schnelles Layout

CSS-Viewport-Einheiten gibt es schon seit einigen...