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. Gleichzeitige Zugriffskontr...
Dieser Artikel beschreibt den MySQL-Show-Vorgang ...
123WORDPRESS.COM--HTML超文本标记语言速查手册<!-- --> !D...
<br />Vorab muss ich sagen, dass ich ein abs...
Nutzungsumgebung Geben Sie im cmd-Modus mysql --v...
Gehen Sie im Hive-Installationsverzeichnis in das...
Zweck: Verschachtelte Verwendung von MySQL-Aggreg...
Bei der Verwendung von MySQL werden Daten im Allg...
1. Überprüfen Sie, ob das Modul „Status prüfen“ i...
Nach der Installation von Ubuntu 20.04 gibt es st...
Für meine Arbeit habe ich im Internet viele Infor...
Kürzlich hat das WeChat Mini-Programm Anpassungen...
Inhaltsverzeichnis Auf der offiziellen React-Webs...
Verwenden Sie HSSFWorkbook in Apache.POI, um nach...
Machen Sie sich anhand von Beispielen mit der Bede...