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:
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:
|
<<: Beispiel für die Konvertierung eines flachen JavaScript-Arrays in eine Baumstruktur
>>: Einrichten von VMware vSphere in VMware Workstation (Grafisches Tutorial)
Inhaltsverzeichnis 1. Projektumgebung 2. Projektb...
Überblick In einer relationalen Datenbank ist ein...
Inhaltsverzeichnis PXE implementiert die unbeaufs...
Lassen Sie uns ohne weitere Umschweife den Screen...
Vorwort Unter Linux ist zum Kompilieren und Verkn...
1. Bitte laden Sie den Busybox-Quellcode online h...
Anwendungsszenario In vielen Fällen installieren ...
Vorwort: In MySQL unterstützt das System viele Ze...
In diesem Artikel werden hauptsächlich die folgen...
#!/bin/bash #SVN herunterladen yum -y installiere...
HTML-Tags zur Textformatierung 標簽 描述 <b> 定義...
<> Operator Funktion: Zeigt an, dass es ung...
1. Übersicht Beim täglichen Betrieb und bei der W...
Vorwort Während des Vorstellungsgesprächs erwähne...
CSS-Viewport-Einheiten gibt es schon seit einigen...