Detaillierte Erläuterung zum Erstellen, Aufrufen und Verwalten von MySQL-gespeicherten Prozeduren

Detaillierte Erläuterung zum Erstellen, Aufrufen und Verwalten von MySQL-gespeicherten Prozeduren

Einführung in gespeicherte Prozeduren

Warum gespeicherte Prozeduren verwenden?

MySQL Version 5.0 begann, gespeicherte Prozeduren zu unterstützen.

Die meisten SQL-Anweisungen sind einzelne Anweisungen für eine oder mehrere Tabellen. Nicht alle Operationen sind so einfach. Oft sind für die Ausführung eines vollständigen Vorgangs mehrere Anweisungen erforderlich.

Einfach ausgedrückt ist eine gespeicherte Prozedur eine Sammlung von einer oder mehreren MySQL-Anweisungen, die zur späteren Verwendung gespeichert werden. Stellen Sie es sich als eine Batchdatei vor. Ihre Rolle ist jedoch nicht auf die Stapelverarbeitung beschränkt.

Die Idee gespeicherter Prozeduren ist sehr einfach: Sie besteht darin, Codes auf der Ebene der Datenbank-SQL-Sprache zu kapseln und wiederzuverwenden.

Vorteile gespeicherter Prozeduren

  1. Vereinfachen Sie komplexe Vorgänge, indem Sie die Verarbeitung in benutzerfreundliche Einheiten kapseln.
  2. Vereinfachen Sie das Änderungsmanagement. Wenn sich der Tabellenname, der Spaltenname oder die Geschäftslogik ändert. Es muss nur der Code der gespeicherten Prozedur geändert werden, und die Personen, die sie verwenden, ändern ihren eigenen Code nicht.
  3. Normalerweise tragen gespeicherte Prozeduren dazu bei, die Leistung Ihrer Anwendung zu verbessern. Sobald die erstellte gespeicherte Prozedur kompiliert ist, wird sie in der Datenbank gespeichert. MySQL implementiert gespeicherte Prozeduren jedoch etwas anders. Gespeicherte MySQL-Prozeduren werden bei Bedarf kompiliert. Nach dem Kompilieren einer gespeicherten Prozedur platziert MySQL sie in einem Cache. MySQL verwaltet für jede Verbindung einen eigenen Cache mit gespeicherten Prozeduren. Wenn eine Anwendung eine gespeicherte Prozedur mehrmals in einer einzigen Verbindung verwendet, wird die kompilierte Version verwendet, andernfalls funktioniert die gespeicherte Prozedur wie eine Abfrage.
  4. Gespeicherte Prozeduren tragen zur Reduzierung des Datenverkehrs zwischen der Anwendung und dem Datenbankserver bei, da die Anwendung nicht mehrere lange SQL-Anweisungen senden muss, sondern nur den Namen und die Parameter der gespeicherten Prozedur.
  5. Gespeicherte Prozeduren sind wiederverwendbar und für jede Anwendung transparent. Gespeicherte Prozeduren stellen die Datenbankschnittstelle allen Anwendungen zur Verfügung, sodass Entwickler keine Funktionen entwickeln müssen, die in gespeicherten Prozeduren bereits unterstützt werden.
  6. Gespeicherte Programme sind sicher. Ein Datenbankadministrator kann Anwendungen, die auf gespeicherte Prozeduren in einer Datenbank zugreifen, entsprechende Berechtigungen erteilen, ohne Berechtigungen für die zugrunde liegenden Datenbanktabellen zu erteilen.

Nachteile gespeicherter Prozeduren

  1. Wenn Sie eine große Anzahl gespeicherter Prozeduren verwenden, erhöht sich der Speicherverbrauch jeder Verbindung, die diese gespeicherten Prozeduren verwendet, erheblich. Darüber hinaus erhöht sich die CPU-Auslastung, wenn Sie in gespeicherten Prozeduren viele logische Operationen übermäßig verwenden, da das ursprüngliche Design der MySQL-Datenbank auf effiziente Abfragen ausgerichtet ist und logische Operationen nicht fördert.
  2. Die Struktur gespeicherter Prozeduren erschwert die Entwicklung gespeicherter Prozeduren mit komplexer Geschäftslogik.
  3. Es ist schwierig, gespeicherte Prozeduren zu debuggen. Nur wenige Datenbankverwaltungssysteme ermöglichen das Debuggen gespeicherter Prozeduren. Leider bietet MySQL nicht die Möglichkeit, gespeicherte Prozeduren zu debuggen.
  4. Das Entwickeln und Warten gespeicherter Prozeduren ist nicht einfach. Das Entwickeln und Warten gespeicherter Prozeduren erfordert oft spezielle Kenntnisse, über die nicht alle Anwendungsentwickler verfügen. Dies kann während der Anwendungsentwicklungs- und Wartungsphase zu Problemen führen.

Gespeicherte Prozeduren in MySQL

Erstellen und Aufrufen von Prozeduren

Erstellen Sie eine gespeicherte Prozedur. Der Code lautet wie folgt:

-- Erstellen Sie eine gespeicherte Prozedur. create procedure mypro(in a int, in b int, out sum int) 
beginnen 
Summe = a+b; 
Ende;

Die Ergebnisse sind wie folgt

Bild-20210316103451673

Sie können den Vorgang auch unter dem Knoten „Funktion“ im Navicat-Client anzeigen, wie unten gezeigt:

Bild-20210316103523273

Rufen Sie die gespeicherte Prozedur auf. Der Code lautet wie folgt:

call mypro(1,2,@s);-- ruft die gespeicherte Prozedur auf select @s;-- zeigt die Ausgabeergebnisse der Prozedur an

Ergebnisse der Operation

Bild-20210316103610471

Syntaxanalyse gespeicherter Prozeduren

  • Mit „Prozedur erstellen“ wird eine Prozedur erstellt.
  • mypro wird verwendet, um den Prozedurnamen zu definieren;
  • (in a int, in b int, out sum int) stellt die Parameter der Prozedur dar, wobei in die Eingabeparameter und out die Ausgabeparameter darstellt. Ähnlich wie die Parameter und Rückgabewerte beim Definieren einer Methode in Java;
  • „Begin“ und „End“ geben den Anfang und das Ende des Prozesskörpers an, was dem Paar geschweifter Klammern entspricht, die eine Methode in Java definieren.
  • call wird zum Aufrufen der Prozedur verwendet, @s ist die Variable zum Empfangen der Ausgabeparameter der Prozedur

Parameter gespeicherter Prozeduren

Parameter für gespeicherte Prozeduren in MySQL werden bei der Definition gespeicherter Prozeduren verwendet. Es gibt drei Arten von Parametern:

  • IN-Eingabeparameter: gibt an, dass der Anrufer einen Wert an die Prozedur übergibt (der übergebene Wert kann ein Literal oder eine Variable sein);
  • OUT-Ausgabeparameter: gibt an, dass die Prozedur einen Wert an den Aufrufer übergibt (kann mehrere Werte zurückgeben) (der Ausgabewert kann nur eine Variable sein);
  • INOUT-Eingabe- und Ausgabeparameter: Gibt an, dass der Anrufer Werte an die Prozedur übergibt und die Prozedur Werte an den Anrufer übergibt (die Werte können nur Variablen sein).

Gespeicherte Prozeduren können basierend auf Parametern in vier Kategorien unterteilt werden:

1). Ein Verfahren ohne Parameter;

2). Der Prozess hat nur Eingabeparameter;

3). Ein Prozess mit nur Ausgabeparametern;

4). Eine Prozedur, die Eingabe- und Ausgabeparameter enthält.

Variable

Gespeicherte Prozeduren in MySQL ähneln Methoden in Java.

In diesem Fall können Variablen auch in gespeicherten Prozeduren verwendet werden. Der Gültigkeitsbereich lokaler Variablen in Java ist die Methode, in der sich die Variable befindet, während der Gültigkeitsbereich lokaler Variablen in MySQL die gespeicherte Prozedur ist, in der sich die Variable befindet.

Variablendefinition

DECLARE Variablenname [, Variablenname ...] Datentyp [STANDARDwert];

declare wird zum Deklarieren von Variablen verwendet.

variable_name gibt den Variablennamen an;

datatype ist der Datentyp von MySQL;

default wird verwendet, um Standardwerte zu deklarieren;

Zum Beispiel:

Deklarieren Sie den Namen varchar(20) als Standard „Jack“.

Variablenzuweisung

SET-Variablenname = Ausdruckswert [,Variablenname = Ausdruck ...]

Verwenden Sie Variablen in der gespeicherten Prozedur. Der Code lautet wie folgt

use schooldb;-- Benutze die Datenbank schooldb -- Erstelle eine Prozedur create procedure mypro1()
beginnen
Deklarationsname varchar (20);
Setname = „Qiu Chuji“;
Wählen Sie * aus Studenteninfo, wobei Studentenname = Name ist;
Ende;
-- Rufe die Prozedur call mypro1(); auf.

Ergebnisse der Operation

Bild-20210316104419334

Flusssteuerungsanweisungen

if-Bedingungsanweisung

Die IF Anweisung enthält mehrere bedingte Beurteilungen und führt Anweisungen basierend auf den Ergebnissen von TRUE oder FALSE aus, was der if , else if , else Syntax in Programmiersprachen ähnelt.

Definieren Sie eine gespeicherte Prozedur, geben Sie eine Ganzzahl ein und verwenden Sie eine if-Anweisung, um zu bestimmen, ob es sich um eine positive oder negative Zahl handelt. Der Code lautet wie folgt:

-- Prozedur erstellen Prozedur erstellen mypro2(in num int)
beginnen
wenn Num<0, dann - Bedingung beginnt mit der Auswahl von „negativer Zahl“;
sonstwenn Zahl=0 dann
wählen Sie „weder positiv noch negativ“;
anders
wählen Sie „positive Zahl“;
Ende wenn;-- Bedingung endet Ende;
-- Rufe die Prozedur call mypro2(-1) auf;

Ergebnisse der Operation

Bild-20210316104810016

Case-Bedingungsanweisung

case ist eine weitere bedingte Anweisung, ähnlich choose und when -Syntax in Programmiersprachen. case -Anweisung in MySQL hat zwei Syntaxformate.

Definieren Sie eine gespeicherte Prozedur, geben Sie eine Ganzzahl ein und verwenden Sie die Case-Anweisung, um zu bestimmen, ob es sich um eine positive oder negative Zahl handelt. Der Code lautet wie folgt:

-- Prozedur erstellen Prozedur erstellen mypro3(in num int)
beginnen
Fall – Bedingung beginnt, wenn Zahl < 0, dann wähle „negative Zahl“;
wenn Num=0, dann wähle „weder positiv noch negativ“;
andernfalls wählen Sie „positive Zahl“;
Ende des Falls; -- Bedingung beendet Ende;
-- Rufe die Prozedur call mypro3(1) auf;

Ergebnisse der Operation

Bild-20210316104934579

Definieren Sie eine gespeicherte Prozedur, geben Sie eine Ganzzahl ein und verwenden Sie eine Case-Anweisung, um zu bestimmen, ob es 1 oder 2 ist. Der Code lautet wie folgt:

-- Prozedur erstellen Prozedur erstellen mypro4(in num int)
beginnen
Fallnummer – Bedingung beginnt bei 1, dann wählen Sie „der Wert ist 1“;
wenn 2, dann wählen Sie „der Wert ist 2“;
andernfalls wählen Sie „weder 1 noch 2“;
Ende des Falls; -- Bedingung beendet Ende;
-- Rufe die Prozedur call mypro4(3) auf;

Ergebnisse der Operation

Bild-20210316105009743

In beiden Fällen können bedingte Urteile implementiert werden, die erste eignet sich jedoch für Bereichswerturteile, während die zweite für bestimmte Werturteile geeignet ist.

While-Schleifenanweisung

Die Verwendung der while Anweisung ähnelt der while Schleife in java .

Definieren Sie eine gespeicherte Prozedur und verwenden Sie eine While-Schleife, um die kumulierte Summe von 1 bis 10 auszugeben. Der Code lautet wie folgt:

-- Prozedur erstellen Prozedur erstellen mypro5(out sum int)
beginnen
Deklarieren Sie num int als Standard 0;
setze Summe = 0;
while num<10 do -- Schleife startet set num = num+1;
Summe = Summe+Zahl festlegen;
Ende während; -- Ende der Schleife Ende;
-- Rufe die Prozedur call mypro5(@sum) auf;
--Abfragevariablenwert select @sum;

Ergebnisse der Operation

Bild-20210316105127457

repeat-Schleifenanweisung

Die Verwendung der repeat -Anweisung ähnelt do…while -Anweisung in java . Beide führen zuerst die Schleifenoperation aus und beurteilen dann die Bedingung. Der Unterschied besteht darin, dass die Schleifenoperation nur ausgeführt wird, wenn der Wert des repeat -Ausdrucks false ist, und angehalten wird, bis der Wert des Ausdrucks true ist.

Definieren Sie eine gespeicherte Prozedur und verwenden Sie eine Wiederholungsschleife, um die kumulierte Summe von 1 bis 10 auszugeben. Der Code lautet wie folgt:

-- Prozedur erstellen Prozedur erstellen mypro6(out sum int)
beginnen
Deklarieren Sie num int als Standard 0;
setze Summe = 0;
Wiederholen – Schleife startet, setze Num = Num+1;
Summe = Summe+Zahl festlegen;
bis num>=10
Ende der Wiederholung; -- Ende der Schleife;
-- Rufe die Prozedur call mypro6(@sum) auf;
--Abfragevariablenwert select @sum;

Ergebnisse der Operation

Bild-20210316105241308

loop-Anweisung

Um bestimmte Anweisungen wiederholt auszuführen, werden Schleifenanweisungen verwendet.

Während des Ausführungsprozesses können Sie mit Hilfe von leave oder iterate Anweisungen aus der Schleife springen oder Urteilsanweisungen wie IF verschachteln.

Die leave -Anweisung entspricht der break in Java und wird zum Beenden der Schleife verwendet.

iterate Anweisung entspricht der continue in Java, mit der die aktuelle Schleifenoperation beendet und die nächste Schleife aufgerufen wird.

Definieren Sie eine gespeicherte Prozedur und verwenden Sie eine Schleife, um die kumulierte Summe von 1 bis 10 auszugeben. Der Code lautet wie folgt:

-- Prozedur erstellen Prozedur erstellen mypro7(out sum int)
beginnen
Deklarieren Sie num int als Standard 0;
setze Summe = 0;
loop_sum:Schleife – Schleife startet, setze Num = Num+1;
Summe = Summe+Zahl festlegen;
wenn num>=10 dann
verlasse loop_sum;
Ende wenn;
Ende der Schleife loop_sum; – Ende der Schleife end;
-- Rufe die Prozedur call mypro7(@sum) auf;
--Abfragevariablenwert select @sum;

Ergebnisse der Operation

Bild-20210316105416021

Die loop_sum im Code entspricht der Beschriftung der Schleife, was eine flexible Bedienung bei mehreren Schleifen ermöglicht.

Verwaltung gespeicherter Prozeduren

Die Verwaltung gespeicherter Prozeduren umfasst hauptsächlich: Anzeigen von Prozeduren, Anzeigen des Prozedurquellcodes und Löschen von Prozeduren.

Eine relativ einfache Möglichkeit besteht darin, das Navicat-Client-Tool zur Verwaltung zu verwenden. Klicken Sie einfach mit der Maus, wie in der folgenden Abbildung gezeigt:

Bild-20210316105545505

Gespeicherte Prozeduren anzeigen

VERFAHRENSSTATUS ANZEIGEN;

Zeigt gespeicherte Prozeduren für eine bestimmte Datenbank an

VERFAHREN-Status anzeigen, wobei db = „Schuldb“;

Zeigt die gespeicherten Prozeduren eines bestimmten Schemas an und erfordert, dass die gespeicherten Prozeduren angezeigt werden, deren Namen "my" enthalten.

VERFAHRENSSTATUS ANZEIGEN, bei dem der Name beispielsweise „%my%“ lautet;

Den Quellcode der gespeicherten Prozedur „mypro1“ anzeigen

PROZEDUR ZUM ERSTELLEN ANZEIGEN mypro1;

Bild-20210316105740141

Löschen Sie die gespeicherte Prozedur „mypro1“.

VERFAHREN mypro1 löschen;

Zusammenfassen

Damit ist dieser Artikel zum Erstellen, Aufrufen und Verwalten von gespeicherten MySQL-Prozeduren abgeschlossen. Weitere Informationen zu gespeicherten MySQL-Prozeduren finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So erstellen Sie schnell eine Testdatentabelle mit 8 Millionen Einträgen in MySQL
  • Verstehen Sie die Prinzipien der MySQL-Indexerstellung in einem Artikel
  • MySQL erstellt eine geplante Aufgabe
  • Der erste Schritt beim Einstieg in die MySQL-Datenbank besteht darin, eine Tabelle zu erstellen
  • Was Sie über das Erstellen von MySQL-Indizes wissen müssen
  • So erstellen Sie eine Tabelle in MySQL und fügen Feldkommentare hinzu
  • MySQL erstellt Viele-zu-viele- und Eins-zu-eins-Beziehungen

<<:  Eine kurze Diskussion über das Blockieren von CSS-Zusammenführungen und andere Auswirkungen

>>:  Verwendung des Zielattributs des HTML-Tags a

Artikel empfehlen

So erstellen Sie ein CentOS-Basisimage

Vorwort Derzeit ist das von meiner Firma verwende...

Praxis der Verwendung von Vite2+Vue3 zum Rendern von Markdown-Dokumenten

Inhaltsverzeichnis Benutzerdefinierte Vite-Plugin...

Detaillierte Erklärung zur Installation von MySQL in der Alibaba Cloud

Als leichte Open-Source-Datenbank wird MySQL häuf...

Tipps und Vorsichtsmaßnahmen zur Verwendung des MySQL-Index

1. Die Rolle des Index In allgemeinen Anwendungss...

Zusammenfassung der MySQL-Datenmigration

Inhaltsverzeichnis Vorwort: 1. Über die Datenmigr...

So simulieren Sie Netzwerkpaketverlust und -verzögerung in Linux

netem und tc: netem ist ein Netzwerksimulationsmo...

Analyse des Prinzips des dynamischen Proxys des Mybatis-Mappers

Vorwort Bevor wir mit der Erklärung des Prinzips ...

MySQL-Konfiguration SSL-Master-Slave-Replikation

MySQL5.6 So erstellen Sie SSL-Dateien Offizielle ...

MySQL Infobright-Installationsschritte

Inhaltsverzeichnis 1. Verwenden Sie den Befehl „r...

JS implementiert einen einfachen Zähler

Verwenden Sie HTML, CSS und JavaScript, um einen ...

HTML-Hyperlink ein Tag_Powernode Java Academy

Jeder, der HTML studiert oder verwendet hat, soll...

Probleme beim Erstellen von Platzhaltern für HTML-Auswahlfelder

Ich verwende einen Platzhalter in einer Texteinga...