Detaillierte Erläuterung des Prinzips und der Verwendung von MySQL-gespeicherten Prozeduren

Detaillierte Erläuterung des Prinzips und der Verwendung von MySQL-gespeicherten Prozeduren

Dieser Artikel erläutert anhand von Beispielen die Prinzipien und die Verwendung von gespeicherten MySQL-Prozeduren. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

In diesem Artikel:

  • Was ist eine gespeicherte Prozedur?
  • Erstellen einer gespeicherten Prozedur
  • Verwendung gespeicherter Prozeduren
  • Gespeicherte Prozeduren anzeigen
  • Ändern der gespeicherten Prozedur
  • Löschen einer gespeicherten Prozedur

Veröffentlichungsdatum: 17.04.2018


Was ist eine gespeicherte Prozedur:

  • Eine gespeicherte Prozedur speichert eine Reihe von SQL-Anweisungen
  • Nachfolgend sehen Sie ein klassisches Anforderungsszenario für gespeicherte Prozeduren, das in vielen MySQL-Büchern zu finden ist: image
  • Eine gespeicherte Prozedur speichert eine Reihe von SQL-Anweisungen , was die Vorgänge vereinfacht und keine wiederholte Ausführung einer Reihe von Vorgängen erfordert. Rufen Sie bei Bedarf einfach die gespeicherte Prozedur auf.
  • Im Allgemeinen kann die Funktionalität einer gespeicherten Prozedur als der einer Funktion ähnlich betrachtet werden (Sie sollten alle etwas über Funktionen gelernt haben), Sie sollten sich jedoch darüber im Klaren sein, dass eine gespeicherte Prozedur keinen Rückgabewert hat, sodass Sie eine gespeicherte Prozedur anhand der Szenarien verstehen können, in denen eine Funktion verwendet werden kann.

Auffüllen:

  • Der Unterschied zwischen gespeicherten Prozeduren und Triggern: Ein Trigger führt eine Reihe von Anweisungen aus, wenn er ein Ereignis auslöst ; eine gespeicherte Prozedur hingegen wird aufgerufen und erwägt je nach Situation auch die Ausführung einer „weiteren Reihe von Anweisungen“.
  • Der Unterschied zwischen gespeicherten Prozeduren und Funktionen: Funktionen haben Rückgabewerte, gespeicherte Prozeduren jedoch nicht [deshalb können sie nicht in Select-Anweisungen verwendet werden]

Erstellen einer gespeicherten Prozedur:

  • Prozedur erstellen, Name der gespeicherten Prozedur ([Parameterliste]), SQL-Anweisung beginnen, Ende;
    • Das Format der Parameterliste ist: [Typ qualifizierter Variablenname Datentyp]
      • Die Parameterliste hat ihre eigene Typbeschränkung. Diese Typbeschränkung unterscheidet sich vom Datentyp. Sie begrenzt den Umfang des Parameters.
        • in: Dieser Parameter kann nur an die gespeicherte Prozedur übergeben werden. Da er als Wert übergeben wird, kann es sich um eine Variable oder einen konstanten Wert handeln [ der durch in geänderte Parameter wird im Allgemeinen als bestimmte Bedingung an die gespeicherte Prozedur übergeben und wird von der gespeicherten Prozedur nicht geändert ]
        • out: Dieser Parameter ist auf einen von der gespeicherten Prozedur übergebenen Wert beschränkt. Da ein Wert zurückgegeben wird, muss dieser Parameter eine Variable sein. [Der von out geänderten Variable wird in der gespeicherten Prozedur ein Wert zugewiesen, sodass der geänderte Wert außerhalb der Prozedur abgerufen werden kann.]
        • inout: inout ist eine Kombination der beiden oben genannten. Es kann innerhalb der gespeicherten Prozedur verwendet und extern geändert und verwendet werden. Da es einen Wert zurückgibt, muss dieser Parameter eine Variable sein.
  • Theoretisch können Sie gespeicherte Prozeduren verwenden, um jede Situation zu bewältigen, in der Sie prägnanten Code benötigen, z. B. wenn Sie schnell mehrere Auswahlen verwenden möchten oder wenn Sie mehrere Werte aus Daten extrahieren und sie Variablen zuweisen möchten. Daher wird im Folgenden nur die Verwendung angegeben und die Anwendungsszenarien werden nicht beschrieben.
    • 1: Es werden keine Parameter übergeben, nur bestimmte Codes werden ausgeführt
    • 2. Übergeben Sie Parameter und verwenden Sie sie als Bedingungen für die Codeausführung
    • 3. Übergeben Sie Parameter und verwenden Sie sie als Bedingungen zum Ausführen von Code, während Sie Variablen verwenden, um Ergebnisse zu erhalten.
    • [Der folgende Aufruf ist der aufrufende Prozess]
-- Das einfachste Beispiel ist die Prozedur „myselect()“
beginnen 
  wählen Sie @@version;
Ende;
Prozedur erstellen getInfo(in mname varchar(15))
beginnen 
wähle mname;
Ende;
rufe myselect() auf;
rufe getInfo("lilie"); auf.
-- Prozedur getInfo2(in mname varchar(15)) erstellen, die den angegebenen Inhalt durch Übergabe von Parametern abrufen kann
beginnen 
Wählen Sie * vom Studenten, wobei Name = Mname ist;
Ende;
rufe getInfo2("lilei") auf;
-- Weisen Sie das Ergebnis einer Variablen zu und übergeben Sie es an die externe Erstellungsprozedur getInfo3(in mname varchar(15),out oname varchar(15))
beginnen 
Wählen Sie den Namen des Studenten aus, wobei Name = mname in oname;
Ende;
rufen Sie getInfo3("lilei",@mname); auf.
wähle @mname;

Auffüllen:

  • Wenn Sie eine gespeicherte Prozedur im Befehlszeilenmodus erstellen, müssen Sie, ähnlich wie bei Triggern, das Befehlsabschlusszeichen ändern.
  • Es kann auch einige spezielle Optionen geben, die nach ([Parameterliste]) und vor begin geschrieben werden
    • Kommentar: ist eine Beschreibung dieser gespeicherten Prozedur
      Prozedur myselect2() erstellen
      Kommentar „Meine Reihe von SQL-Anweisungen“
      beginnen 
        wähle * vom Studenten;
        wähle * aus Klasse;
      Ende;
      zeige Prozedur zum Erstellen von myselect2;
    • Es gibt noch einige andere Optionen wie SQL-Sicherheit. Wenn Sie interessiert sind, können Sie auf Baidu suchen. Ich werde es hier nicht erklären, sondern nur diesen Wissenspunkt erwähnen.

Verwendung gespeicherter Prozeduren:

  • Gespeicherte Prozedur aufrufen: Gespeicherte Prozedurname aufrufen();
  • Aufrufen einer gespeicherten Prozedur mit Parametern: Aufruf des Namens der gespeicherten Prozedur (Parameter);
    • Beim Typ kann der Parameter ein Wert oder eine Variable sein.
    • Für Out\Inout-Typen muss der Parameter eine Variable sein
    • Alle MySQL-Variablen müssen mit @ beginnen.
    • Beispiel: call myselect("lilei",@variable name); Beispiel: call myselect(@variable name,@variable name)

Die unten aufgerufene gespeicherte Prozedur ist die gespeicherte Prozedur, die in der oben erstellten gespeicherten Prozedur definiert ist:

rufe myselect() auf;

rufe getInfo("lilie"); auf.

setze @mname="lilei";
rufen Sie getInfo(@mname) auf;

rufen Sie getInfo3("lilei",@mname); auf.

Verwendung von Variablen:

  • out und inout können Variablen ändern, die von der gespeicherten Prozedur geändert werden, aber diese Änderung ist erst erfolgreich, wenn der Aufruf der gespeicherten Prozedur beendet ist [genauso wie wenn es innerhalb der Prozedur einen Befehl gibt, der sie ändert, können Sie die Variablen nach diesem Befehl überprüfen und feststellen, dass sich die globalen Variablen nicht geändert haben, sondern nur die lokalen Variablen ].
  • Alle MySQL-Variablen müssen mit @ beginnen.
  • In einer gespeicherten Prozedur können Sie „select variable name“ verwenden, um lokale Variablen zu verwenden, und „select @variable name“, um globale Variablen zu verwenden.
  • Die Definition und Verwendung spezifischer Variablen wird in einem anderen Blogbeitrag von mir erläutert. Hyperlink: MySQL-Variablen

Zeigen Sie die gespeicherte Prozedur an:

  • Zeigen Sie die Erstellungsanweisung der gespeicherten Prozedur an: „show create procedure stored procedure name“;
  • Zeigen Sie den Status der gespeicherten Prozedur an: Prozedurstatus anzeigen; [Der angezeigte Inhalt umfasst Erstellungszeit, Kommentare, definierte Benutzer, Sicherheitstyp usw.]

Ändern Sie die gespeicherte Prozedur:

  • Wenn Sie eine gespeicherte Prozedur ändern, können Sie nur diese Optionen ändern (die spezifischen Optionen werden hier nicht erläutert, Sie können bei Bedarf auf Baidu suchen), aber Sie können die eingehenden und ausgehenden Parameter oder SQL-Anweisungen nicht ändern.
  • Option zum Ändern des gespeicherten Prozedurnamens;
    • image

Löschen Sie die gespeicherte Prozedur:

  • Syntax: Prozedur löschen, gespeicherter Prozedurname;
  • Beispiel:
  • Drop-Prozedur getInfo;

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:
  • Definition und Zuweisung von Variablen in gespeicherten MySQL-Prozeduren
  • Detaillierte Erklärung der gespeicherten MySQL-Prozedur
  • Einführung in die Verwendung der Cursorschleife für gespeicherte Prozeduren in MySQL
  • Beispiel für eine gespeicherte MySQL-Prozedur (einschließlich Transaktionen, Ausgabeparameter, verschachtelte Aufrufe)
  • Detaillierte Erläuterung der gespeicherten Prozeduren und Funktionen von MySql
  • MySQL-Abfragedatenbank - gespeicherte Prozeduren und Funktionsanweisungen
  • Beispielanalyse gespeicherter Prozeduren in MySQL und wie gespeicherte Prozeduren aufgerufen werden
  • Detaillierte Erklärung, wie man in dynamischen SQL-Dateien in gespeicherten MySQL-Prozeduren einen Rückgabewert erhält
  • So führen Sie dynamische SQL-Anweisungen in gespeicherten MySQL-Prozeduren aus
  • Beispiel für das Verlassen und Fortsetzen der Cursorschleife in gespeicherten MySQL-Prozeduren
  • Der Unterschied zwischen gespeicherten MySQL-Prozeduren und -Funktionen

<<:  So erstellen Sie schnell Ihren eigenen Server - ausführliches Tutorial (Java-Umgebung)

>>:  Detaillierte Erklärung der Entwurfsmuster des JavaScript-Frameworks

Artikel empfehlen

Implementierung der Docker-Container-Statuskonvertierung

Ein Zustandsübergangsdiagramm eines Docker-Contai...

So überwachen Sie globale Variablen im WeChat-Applet

Ich bin kürzlich bei der Arbeit auf ein Problem g...

Web-Theorie: Bringen Sie mich nicht zum Nachdenken über Lesehinweise

Kapitel 1 <br />Das wichtigste Prinzip, um ...

So konfigurieren Sie einen Pfadalias für das React-Scaffolding

Die React-Version beim Schreiben dieses Artikels ...

jQuery realisiert Bildhervorhebung

Es ist sehr üblich, Bilder auf einer Seite hervor...

Gründe und Lösungen für die Auswahl des falschen Index durch MySQL

In MySQL können Sie mehrere Indizes für eine Tabe...

So stellen Sie MySQL so ein, dass die Groß-/Kleinschreibung nicht beachtet wird

MySQL auf Groß-/Kleinschreibung eingestellt Windo...

Implementierung der MySQL-Dezimaldatentypkonvertierung

Kürzlich stieß ich auf eine Datenbank mit folgend...

Implementierung der MySQL-Datentypkonvertierung

1. Problem Es gibt eine Tabelle wie unten gezeigt...

Detaillierte Erläuterung der drei Methoden zum Abfangen von JS-Zeichenfolgen

JS bietet drei Methoden zum Abfangen von Zeichenf...