Heim >Datenbank >MySQL-Tutorial >Erstellung einer gespeicherten MySQL-Prozedur
Die gespeicherte MySQL-Prozedur ist ein vorkompilierter Codeblock, der definiert und in einer MySQL-Datenbank für die zukünftige Ausführung gespeichert werden kann. Sie können Eingabeparameter akzeptieren und Ergebnisse zurückgeben, und viele komplexe Operationen können mithilfe gespeicherter Prozeduren geschrieben werden. Die Verwendung gespeicherter Prozeduren kann die Datenbankleistung verbessern und die Codeduplizierung reduzieren.
In diesem Artikel stellen wir vor, wie Sie mit MySQL eine gespeicherte Prozedur erstellen, einschließlich der Syntax gespeicherter Prozeduren, wie Sie Eingabeparameter definieren und Ergebnisse zurückgeben und wie Sie gespeicherte Prozeduren aufrufen. Stellen Sie vor dem Start sicher, dass Sie mit der MySQL-Datenbank verbunden sind.
Die gespeicherte Prozedur von MySQL verwendet DELIMITER, um das benutzerdefinierte Trennzeichen festzulegen, da das Standardtrennzeichen „;“ ist, das mit dem Endsymbol der gespeicherten Prozeduranweisung identisch ist. Wir können eine grundlegende gespeicherte Prozedur mit der folgenden Syntax erstellen:
DELIMITER $$ CREATE PROCEDURE procedure_name() BEGIN -- 存储过程代码 END $$ DELIMITER ;
Wir definieren den Namen der gespeicherten Prozedur und verwenden die Schlüsselwörter BEGIN und END, um den Codeblock zu definieren. In neueren MySQL-Versionen ist es auch möglich, gespeicherte Prozeduren mit einer anderen Syntax als BEGIN und END zu definieren, wie unten gezeigt:
CREATE PROCEDURE procedure_name() COMMENT '存储过程描述' LANGUAGE SQL [NOT] DETERMINISTIC [CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA] SQL SECURITY INVOKER COMMENT '存储过程描述' BEGIN -- 存储过程代码 END;
In dieser Syntax können Sie optional zusätzliche Eigenschaften wie SQL SECURITY hinzufügen, um die Sicherheit der gespeicherten Prozedur anzugeben .
Jetzt erstellen wir eine einfache gespeicherte Prozedur, die einen Parameter akzeptiert und das Quadrat dieses Parameters zurückgibt. Nennen wir es „Quadrat“.
DELIMITER $$ CREATE PROCEDURE square(IN num INT) BEGIN SELECT num * num; END $$ DELIMITER ;
Wir verwenden das Schlüsselwort IN, um einen Eingabeparameter zu definieren. In der gespeicherten Prozedur multiplizieren wir diesen Parameter einfach mit sich selbst und geben das Ergebnis mithilfe einer SELECT-Anweisung zurück.
Um eine gespeicherte Prozedur aufzurufen, können wir die CALL-Anweisung verwenden, gefolgt vom Namen und den Parametern der gespeicherten Prozedur. Verwenden wir die folgende Syntax, um die soeben erstellte gespeicherte Prozedur „Quadrat“ aufzurufen.
CALL square(5);
Dies gibt 25 zurück. Um besser zu verstehen, wie eine gespeicherte Prozedur funktioniert, können wir sie mit einer normalen Abfrage vergleichen.
SELECT 5 * 5;
Dies gibt auch 25 zurück. Wie man sieht, werden mit gespeicherten Prozeduren und gewöhnlichen Abfragen die gleichen Ergebnisse erzielt, gespeicherte Prozeduren haben jedoch, wie bereits erwähnt, weitere Vorteile, einschließlich schneller Abfragen und Wiederverwendung von Codeblöcken.
Gespeicherte Prozeduren enthalten verschiedene Kontrollflussanweisungen, einschließlich IF-Anweisungen, CASE-Anweisungen und Schleifenanweisungen. Hier sind einige Beispiele.
IF-Anweisung bestimmt, wann ein Codeblock basierend auf einer Bedingung ausgeführt werden soll. Hier ist ein Beispiel für eine einfache IF-Anweisung:
DELIMITER $$ CREATE PROCEDURE even_or_odd(IN num INT) BEGIN IF num % 2 = 0 THEN SELECT 'even'; ELSE SELECT 'odd'; END IF; END $$ DELIMITER ;
In diesem Beispiel erstellen wir eine gespeicherte Prozedur, die eine Zahl akzeptiert und eine Zeichenfolge zurückgibt, je nachdem, ob die Zahl gerade oder ungerade ist. Gibt „gerade“ zurück, wenn die Zahl durch 2 teilbar ist, andernfalls wird „ungerade“ zurückgegeben.
Die CASE-Anweisung ähnelt der IF-Anweisung, kann jedoch basierend auf mehr Bedingungen unterschiedliche Codeblöcke ausführen. Hier ist ein Beispiel für eine einfache CASE-Anweisung:
DELIMITER $$ CREATE PROCEDURE grade(IN score INT) BEGIN CASE WHEN score >= 90 THEN SELECT 'A'; WHEN score >= 80 THEN SELECT 'B'; WHEN score >= 70 THEN SELECT 'C'; WHEN score >= 60 THEN SELECT 'D'; ELSE SELECT 'F'; END CASE; END $$ DELIMITER ;
In diesem Beispiel erstellen wir eine gespeicherte Prozedur, die eine Punktzahl akzeptiert und basierend auf dieser Punktzahl eine Buchstabennote zurückgibt. Wenn die Punktzahl größer oder gleich 90 ist, wird die Note A vergeben, bei 80 Punkten und 70 Punkten wird die Note B bzw. C vergeben, bei 60 Punkten und darunter wird die Note D vergeben, andernfalls wird die Note F vergeben .
WHILE-Schleife ist eine Art Schleife, die einen Codeblock wiederholt ausführt. Es basiert auf einer Bedingung, die den Code so lange ausführt, wie die Bedingung erfüllt ist. Hier ist ein einfaches Beispiel für eine WHILE-Schleife:
DELIMITER $$ CREATE PROCEDURE count_down(IN num INT) BEGIN WHILE num > 0 DO SELECT num; SET num = num - 1; END WHILE; END $$ DELIMITER ;
In diesem Beispiel haben wir eine gespeicherte Prozedur erstellt, die eine Zahl akzeptiert, von dieser Zahl herunterzählt und jede Zahl in die Ergebnismenge ausgibt. Zum Herunterzählen verwenden wir eine WHILE-Schleife und solange die Zahl größer als 0 ist, geben wir sie aus und dekrementieren den Wert von num.
Gespeicherte MySQL-Prozeduren sind ein leistungsstarkes Tool, das die Leistung Ihrer Datenbank erheblich verbessern und Ihren Code vereinfachen kann. In diesem Artikel wird erläutert, wie Sie mit MySQL eine gespeicherte Prozedur erstellen, Eingabeparameter definieren und Ergebnisse zurückgeben und Beispiele für verschiedene Kontrollflussanweisungen bereitstellen. Obwohl gespeicherte Prozeduren leistungsstark sind, ist es wichtig, auf die Sicherheit zu achten, um sicherzustellen, dass der Zugriff ordnungsgemäß kontrolliert und die Daten geschützt werden.
Das obige ist der detaillierte Inhalt vonErstellung einer gespeicherten MySQL-Prozedur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!