So erstellen (CREATE PROCEDURE) und rufen (CALL) Sie eine gespeicherte MySQL-Prozedur auf und so erstellen (DECLARE) und weisen (SET) Sie eine Variable zu

So erstellen (CREATE PROCEDURE) und rufen (CALL) Sie eine gespeicherte MySQL-Prozedur auf und so erstellen (DECLARE) und weisen (SET) Sie eine Variable zu

Dieser Artikel beschreibt anhand von Beispielen, wie Sie in MySQL gespeicherte Prozeduren erstellen (CREATE PROCEDURE) und aufrufen (CALL) und wie Sie Variablen erstellen (DECLARE) und zuweisen (SET). Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Erstellen (CREATE PROCEDURE) und Aufrufen (CALL) gespeicherter Prozeduren

Wir werden hier nicht über Definitionen oder Begriffe sprechen. Schauen Sie sich einfach die Beispiele an und machen Sie sich langsam damit vertraut. Erstellen wir nun eine einfache gespeicherte Prozedur namens GetAllProducts(). Diese gespeicherte Prozedur GetAllProducts() wird hauptsächlich verwendet, um alle Produkte aus der Produkttabelle auszuwählen. Starten wir das MySQL-Clienttool und geben den folgenden Befehl ein:

TRENNUNGSZEICHEN //
 PROZEDUR ERSTELLEN GetAllProducts()
  BEGINNEN
  WÄHLEN SIE * AUS Produkten;
  ENDE //
TRENNUNGSZEICHEN ;

Schauen wir uns das obige SQL genauer an:

  • Der erste Befehl ist DELIMITER //, der nichts mit der Syntax gespeicherter Prozeduren zu tun hat. Die DELIMITER-Anweisung ändert das Standardtrennzeichen, das Semikolon (;), in ://. In diesem Fall wird das Trennzeichen von einem Semikolon (;) in doppelte Schrägstriche // geändert. Warum müssen wir das Trennzeichen ändern? Weil wir die gespeicherte Prozedur als Ganzes an den Server übergeben möchten, anstatt jede Anweisung einzeln vom MySQL-Tool interpretieren zu lassen. Verwenden Sie nach dem Schlüsselwort END das Trennzeichen //, um das Ende der gespeicherten Prozedur anzuzeigen. Der letzte Befehl (DELIMITER;) ändert das Trennzeichen zurück in ein Semikolon (;).
  • Verwenden Sie die Anweisung CREATE PROCEDURE, um eine neue gespeicherte Prozedur zu erstellen. Geben Sie den Namen der gespeicherten Prozedur nach der Anweisung CREATE PROCEDURE an. In diesem Beispiel lautet der Name der gespeicherten Prozedur: GetAllProducts und die Klammern werden nach dem Namen der gespeicherten Prozedur platziert.
  • Der Teil zwischen BEGIN und END wird als Hauptteil der gespeicherten Prozedur bezeichnet. Platzieren Sie deklarative SQL-Anweisungen im Textkörper, um die Geschäftslogik zu handhaben. In dieser gespeicherten Prozedur verwenden wir eine einfache Auswahlabfrage, um die Daten in der Produkttabelle abzufragen.

Mit dem obigen SQL haben wir eine gespeicherte Prozedur erstellt. Wenn wir fertig sind, rufen wir die gespeicherte Prozedur auf. Werfen wir einen Blick auf die Aufrufsyntax:

Rufen Sie STORED_PROCEDURE_NAME() auf;

Sehen wir uns das spezifische SQL an, das die gespeicherte Prozedur GetAllProducts() aufruft:

Rufen Sie GetAllProducts() auf;

Führen Sie das obige SQL aus und Sie sehen die Ergebnisse der SQL-Ausführung in der gespeicherten Prozedur.

Variablenerstellung (DECLARE) und -zuweisung (SET)

Wie wir alle wissen, ist eine Variable ein benanntes Datenobjekt, dessen Wert während der Ausführung einer gespeicherten Prozedur geändert werden kann. Als Nächstes versuchen wir, Variablen in der gespeicherten Prozedur zu verwenden, um die direkten/indirekten Ergebnisse zu speichern. Diese Variablen sind lokale Variablen der gespeicherten Prozedur, aber wir müssen beachten, dass die Variable deklariert werden muss, bevor sie verwendet werden kann. Wenn wir eine Variable in einer gespeicherten Prozedur deklarieren möchten, können wir die Anweisung DECLARE verwenden. Werfen wir einen Blick auf die SQL-Syntax:

DECLARE Variablenname Datentyp (Größe) DEFAULT Standardwert;

Schauen wir uns an, was das obige SQL bedeutet:

  • Geben Sie zunächst den Variablennamen nach dem Schlüsselwort DECLARE an. Variablennamen müssen den Namenskonventionen für MySQL-Tabellenspaltennamen entsprechen.
  • Geben Sie als Nächstes den Datentyp der Variablen und ihre Größe an. Die Variable kann jeden MySQL-Datentyp wie INT, VARCHAR, DATETIME usw. haben.
  • Wenn eine Variable deklariert wird, ist ihr Anfangswert NULL. Sie können einer Variablen jedoch mit dem Schlüsselwort DEFAULT einen Standardwert zuweisen.

Als Nächstes deklarieren wir eine Variable namens total_sale mit dem Datentyp INT und dem Standardwert 0. Schauen wir uns das SQL an:

DECLARE total_sale INT DEFAULT 0;

MySQL erlaubt die Verwendung einer einzigen DECLARE-Anweisung, um zwei oder mehr Variablen zu deklarieren, die denselben Datentyp haben. Werfen wir einen Blick auf das SQL:

DECLARE x, y INT DEFAULT 0;

Im obigen SQL haben wir zwei Ganzzahlvariablen x und y deklariert und ihre Standardwerte auf 0 gesetzt. Nachdem die Variable nun festgelegt wurde, ist es an der Zeit, ihr einen Wert zuzuweisen. Wenn wir einer Variablen einen Wert zuweisen möchten, können wir die SET-Anweisung verwenden. Schauen wir uns ein Beispiel an:

DECLARE total_count INT DEFAULT 0;
SETZEN Sie Gesamtanzahl = 10;

In der obigen SQL-Anweisung weisen wir der Variable total_count den Wert 10 zu. Neben der SET-Anweisung können Sie auch die SELECT INTO-Anweisung verwenden, um das Ergebnis einer Abfrage einer Variablen zuzuweisen. Schauen wir uns ein Beispiel an:

DECLARE total_products INT DEFAULT 0
 
Wählen Sie COUNT(*) INTO Gesamtprodukte
FROM Produkte

Im obigen SQL sollten wir Folgendes verstehen:

  • Deklarieren Sie zunächst eine Variable namens total_products und initialisieren Sie ihren Wert auf 0.
  • Verwenden Sie dann die Anweisung SELECT INTO, um der Variable total_products den Wert zuzuweisen, und wählen Sie dabei die Anzahl der Produkte aus der Produkttabelle in der Datenbank aus.

Wir wissen, dass eine Variable einen eigenen Gültigkeitsbereich hat, der zur Definition ihres Lebenszyklus verwendet wird. Wenn Sie jedoch eine Variable innerhalb einer gespeicherten Prozedur deklarieren, verlässt sie den Gültigkeitsbereich, wenn die END-Anweisung der gespeicherten Prozedur erreicht wird, und kann daher in anderen Codeblöcken nicht mehr aufgerufen werden.

Wir können verstehen, dass wenn wir eine Variable innerhalb eines BEGIN END-Blocks deklarieren, diese den Gültigkeitsbereich verlässt, wenn END erreicht wird. Wir können auch zwei oder mehr Variablen mit demselben Namen in unterschiedlichen Gültigkeitsbereichen deklarieren, da eine Variable nur innerhalb ihres eigenen Gültigkeitsbereichs gültig ist. Das Deklarieren von Variablen mit demselben Namen in unterschiedlichen Gültigkeitsbereichen ist jedoch keine gute Programmierpraxis. Darunter sind Variablen, die mit dem @-Symbol beginnen, Sitzungsvariablen, die bis zum Ende der Sitzung verfügbar und zugänglich sind.

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:
  • So fragen Sie die maximale Anzahl aufeinanderfolgender Anmeldetage zwischen zwei Daten in MySQL ab
  • Definition und Zuweisung von Variablen in gespeicherten MySQL-Prozeduren
  • mysql generiert fortlaufende Daten und Variablenzuweisungen

<<:  Docker legt Port 2375 frei, was zu Serverangriffen und -lösungen führt

>>:  js implementiert das Hinzufügen und Entfernen von Warenkörben sowie die Preisberechnung

Artikel empfehlen

Zwei Möglichkeiten zur Verwendung von React in React HTML

Grundlegende Verwendung <!DOCTYPE html> <...

Docker verwendet Busybox, um ein Basis-Image zu erstellen

Die erste Zeile eines Docker-Images beginnt mit e...

CSS zum Erstellen eines dynamischen sekundären Menüs

Dynamisches Implementieren eines einfachen sekund...

Zusammenfassung des Wissens über MySql-Speicher-Engines und Indizes

Speicher-Engine Was ist eine Datenbank-Speicher-E...

Native JS-Implementierung des Ladefortschrittsbalkens

Dieser Artikel zeigt einen Spezialeffekt für dyna...

Warum MySQL große Transaktionen vermeiden sollte und wie man sie löst

Was ist eine große Sache? Transaktionen, die über...

Beispielcode zur Implementierung des Verlaufs in Vuex

Ich habe vor Kurzem eine visuelle Operationsplatt...

Das WeChat-Applet implementiert einen Videoplayer, der einen Bullet-Screen sendet

In diesem Artikel wird der spezifische Code für d...

CSS3 realisiert den roten Umschlag-Shaking-Effekt

Es besteht die Anforderung, den Schütteleffekt de...

Über das WeChat-Gleitproblem des UniApp-Editors

Das Uniapp-Applet wird ein ähnliches Dropdown-Pro...

JavaScript-Tippspiel

In diesem Artikel wird der spezifische JavaScript...