Detailliertes Beispiel für MySQL-Datenspeicherprozessparameter

Detailliertes Beispiel für MySQL-Datenspeicherprozessparameter

Es gibt drei Typen von MySQL-gespeicherten Prozedurparametern: in, out und inout. Was sind ihre jeweiligen Funktionen und Eigenschaften?

1. Parameter für gespeicherte MySQL-Prozeduren (in)

„In“-Parameter der gespeicherten MySQL-Prozedur: Ähnlich wie bei der Wertübergabe von Funktionsparametern in der Sprache C kann dieser Parameter innerhalb der gespeicherten MySQL-Prozedur geändert werden, die Änderung des Typparameters „in“ ist für den Anrufer jedoch nicht sichtbar.

Prozedur löschen, falls vorhanden, pr_param_in;
Prozedur pr_param_in erstellen
(
  in ID int – im Typ MySQL-gespeicherter Prozedurparameter)
beginnen
  wenn (id ist nicht null), dann
   Setze ID = ID + 1;
  Ende wenn;
  Wähle ID als id_inner;
Ende;
setze @id = 10;
rufen Sie pr_param_in(@id) auf;
wähle @id als id_out;
mysql> rufe pr_param_in(@id) auf;
+----------+
| id_inner |
+----------+
| 11 |
+----------+

mysql> wähle @id als id_out;
+--------+
| id_aus |
+--------+
| 10 |
+--------+

Es ist ersichtlich, dass der an die Benutzervariable @id übergebene Wert 10 ist. Nach der Ausführung der gespeicherten Prozedur lautet der Wert innerhalb der Prozedur: 11 (id_inner), aber der Wert der externen Variable ist immer noch: 10 (id_out).

2. Parameter für gespeicherte MySQL-Prozeduren (Ausgang)

„Out“-Parameter der gespeicherten Prozedur in MySQL: Übergibt Werte aus der gespeicherten Prozedur an den Anrufer. Innerhalb einer gespeicherten Prozedur ist der Anfangswert des Parameters null, unabhängig davon, ob der Aufrufer einen Wert für den Parameter der gespeicherten Prozedur festlegt.

Prozedur löschen, falls vorhanden, pr_param_out;
Prozedur pr_param_out erstellen
(
  aus ID int
)
beginnen
  select id as id_inner_1; -- Der Anfangswert der ID ist null
  wenn (id ist nicht null), dann
   Setze ID = ID + 1;
   Wähle die ID als id_inner_2;
  anders
   wähle 1 in ID;
  Ende wenn;
  Wähle die ID als id_inner_3;
Ende;
setze @id = 10;
rufen Sie pr_param_out(@id) auf;
wähle @id als id_out;
mysql> setze @id = 10;
MySQL>
mysql> rufe pr_param_out(@id) auf;
+------------+
| id_inner_1 |
+------------+
| NULL |
+------------+

+------------+
| id_inner_3 |
+------------+
| 1 |
+------------+

mysql> wähle @id als id_out;
+--------+
| id_aus |
+--------+
| 1 |
+--------+

Es ist ersichtlich, dass, obwohl wir die benutzerdefinierte Variable @id auf 10 setzen, nach der Übergabe von @id an die gespeicherte Prozedur der Anfangswert der ID innerhalb der gespeicherten Prozedur immer null (id_inner_1) ist. Schließlich wird der ID-Wert (id_out = 1) an den Anrufer zurückgegeben.

3. Parameter gespeicherter MySQL-Prozeduren (Ein/Aus)

Die Inout-Parameter gespeicherter Prozeduren in MySQL ähneln den Out-Parametern und beide können Werte innerhalb der gespeicherten Prozedur an den Anrufer übergeben. Der Unterschied besteht darin, dass der Aufrufer auch über Inout-Parameter Werte an die gespeicherte Prozedur übergeben kann.

Prozedur löschen, falls vorhanden, pr_param_inout;
Prozedur pr_param_inout erstellen
(
  Ein-/Aus-ID int
)
beginnen
  select id as id_inner_1; -- Der ID-Wert ist der vom Anrufer übergebene Wert, wenn (ID ist nicht null), dann
   Setze ID = ID + 1;
   Wähle die ID als id_inner_2;
  anders
   wähle 1 in ID;
  Ende wenn;
  Wähle die ID als id_inner_3;
Ende;
setze @id = 10;
rufen Sie pr_param_inout(@id) auf;
wähle @id als id_out;
mysql> setze @id = 10;

MySQL>
mysql> rufe pr_param_inout(@id) auf;
+------------+
| id_inner_1 |
+------------+
| 10 |
+------------+

+------------+
| id_inner_2 |
+------------+
| 11 |
+------------+

+------------+
| id_inner_3 |
+------------+
| 11 |
+------------+
MySQL>
mysql> wähle @id als id_out;
+--------+
| id_aus |
+--------+
| 11 |
+--------+

Aus den Ergebnissen können wir ersehen, dass, nachdem wir @id (10) an die gespeicherte Prozedur übergeben haben, die gespeicherte Prozedur schließlich den berechneten Wert 11 (id_inner_3) an den Anrufer zurückgibt. Das Verhalten von Inout-Parametern in gespeicherten MySQL-Prozeduren ähnelt der Übergabe per Referenz in C-Sprachfunktionen.

Durch die obigen Beispiele: Wenn Sie nur Daten an die gespeicherte MySQL-Prozedur übergeben möchten, verwenden Sie den Typparameter „in“. Wenn Sie nur den Wert aus der gespeicherten MySQL-Prozedur zurückgeben möchten, verwenden Sie den Typparameter „out“. Wenn Sie die Daten an die gespeicherte MySQL-Prozedur übergeben und sie dann nach einigen Berechnungen an uns zurückgeben müssen, verwenden Sie den Typparameter „inout“.

Zusammenfassen

Dies ist der gesamte Inhalt dieses Artikels zur detaillierten Erläuterung von Beispielen für MySQL-Datenspeicherprozessparameter. Ich hoffe, es wird Ihnen helfen, MySQL zu verstehen. Interessierte Freunde können sich weiterhin auf diese Site beziehen: Analyse des Auswahlproblems beim Speichern von Zeit- und Datumstypen in MySQL, MySQL-Deklaration von Variablen und Analyse gespeicherter Prozeduren usw. Wenn Sie Fragen haben, können Sie jederzeit eine Nachricht hinterlassen und der Herausgeber wird Ihnen rechtzeitig antworten. Vielen Dank, Freunde, für die Unterstützung dieser Site!

Das könnte Sie auch interessieren:
  • Zwei Möglichkeiten zum Speichern von Scrapy-Daten in einer MySQL-Datenbank (synchron und asynchron)
  • Python-Beispiel zum Speichern von JSON-ähnlichen Daten in MySQL
  • So installieren Sie MySQL 5.7 unter Ubuntu und konfigurieren den Datenspeicherpfad
  • So ändern Sie das Datenbankdatenspeicherverzeichnis in MySQL
  • So verschieben Sie den Datenspeicherort von mysql5.7.19 in Centos7
  • So implementieren Sie das MySQL-Umschalten des Datenspeicherverzeichnisses
  • Lösung zum Ändern des Datenspeicherorts der Datenbank in MySQL 5.7
  • Details zur MySQL-Datenbankarchitektur
  • MySQL-Speicherung räumlicher Daten und Funktionen

<<:  Grafisches Tutorial zur Installation und Aktivierung von VMware Workstation 14 Pro

>>:  Detaillierte Erklärung des Fehlers bei der Verwendung des Element-ui NavMenu-Untermenüs zur rekursiven Generierung

Artikel empfehlen

So stellen Sie die MySQL5.7-Kodierung auf utf8mb4 ein

Ich bin vor kurzem auf ein Problem gestoßen. Die ...

So stellen Sie Ihre erste Anwendung mit Docker bereit

Im vorherigen Artikel haben Sie Docker Desktop in...

Vue-Konfigurationsdetails für mehrere Seiten

Inhaltsverzeichnis 1. Der Unterschied zwischen me...

Vue3.0 handgeschriebener Karusselleffekt

In diesem Artikel wird der spezifische Code des h...

Was Sie beim Schreiben selbstschließender XHTML-Tags beachten sollten

Das img-Tag in XHTML sollte wie folgt geschrieben...

Vergleich der Effizienz verschiedener Methoden zum Löschen von Dateien in Linux

Testen Sie die Effizienz des Löschens einer große...

Vue Element UI-Komponente für benutzerdefinierte Beschreibungsliste

In diesem Artikelbeispiel wird der spezifische Co...

Drei Möglichkeiten zum Aktualisieren von Iframes

Code kopieren Der Code lautet wie folgt: <ifra...

Zabbix implementiert die Überwachung mehrerer MySQL-Prozesse

Auf einem Server werden drei MySQL-Instanzprozess...

So erhalten Sie Datums-/Uhrzeitdaten in MySQL, gefolgt von .0

Der Datentyp von MySQL ist datetime. Die in der D...

Implementierungsprinzip und Konfiguration der MySql Master-Slave-Replikation

Die Trennung von Lese- und Schreibzugriffen in Da...