Heim  >  Artikel  >  Datenbank  >  Was ist eine gespeicherte Prozedur in MySQL?

Was ist eine gespeicherte Prozedur in MySQL?

青灯夜游
青灯夜游Original
2021-06-11 14:13:546210Durchsuche

In MySQL ist eine gespeicherte Prozedur eine Reihe von SQL-Anweisungen zum Ausführen einer bestimmten Funktion. Der Zweck der Verwendung gespeicherter Prozeduren besteht darin, allgemeine oder komplexe Arbeiten mit SQL-Anweisungen vorab zu schreiben und sie unter einem angegebenen Namen zu speichern. Diese Prozedur wird kompiliert und optimiert und auf dem Datenbankserver gespeichert, daher wird sie als gespeicherte Prozedur bezeichnet.

Was ist eine gespeicherte Prozedur in MySQL?

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

Stored Procedure ist ein Datenbankobjekt, das komplexe Programme in der Datenbank speichert, damit sie von externen Programmen aufgerufen werden können.

Eine gespeicherte Prozedur ist eine Reihe von SQL-Anweisungen, die dazu dienen, eine bestimmte Funktion auszuführen. Der Zweck der Verwendung gespeicherter Prozeduren besteht darin, allgemeine oder komplexe Arbeiten mit SQL-Anweisungen vorab zu schreiben und sie unter einem angegebenen Namen zu speichern. Diese Prozedur wird kompiliert und optimiert und auf dem Datenbankserver gespeichert, daher wird sie als gespeicherte Prozedur bezeichnet. Wenn die Datenbank in Zukunft denselben Dienst wie die definierte gespeicherte Prozedur bereitstellen muss, müssen Sie nur „CALL Stored Procedure Name“ aufrufen, um ihn automatisch abzuschließen.

SQL-Anweisungen, die häufig zum Betrieb von Datenbanken verwendet werden, müssen zuerst kompiliert und dann ausgeführt werden. Gespeicherte Prozeduren verfolgen einen anderen Ansatz zum Ausführen von SQL-Anweisungen.

Eine gespeicherte Prozedur ist eine programmierbare Funktion, die in der Datenbank erstellt und gespeichert wird. Sie besteht im Allgemeinen aus SQL-Anweisungen und einigen speziellen Kontrollstrukturen. Gespeicherte Prozeduren eignen sich besonders dann, wenn Sie dieselbe spezifische Funktion auf verschiedenen Anwendungen oder Plattformen ausführen möchten.

MySQL 5.0-Version unterstützte zuvor keine gespeicherten Prozeduren, was die Anwendung von MySQL stark einschränkte. MySQL unterstützt gespeicherte Prozeduren seit Version 5.0, was nicht nur die Verarbeitungsgeschwindigkeit der Datenbank verbessert, sondern auch die Flexibilität der Datenbankprogrammierung verbessert. Gespeicherte Prozeduren können zum Konvertieren von Daten und zur Datenmigration verwendet werden , und Produktion. Berichte ähneln Programmiersprachen. Nach erfolgreicher Ausführung können sie jederzeit aufgerufen werden, um bestimmte funktionale Vorgänge abzuschließen.

Die Verwendung gespeicherter Prozeduren kann nicht nur die Effizienz des Datenbankzugriffs verbessern, sondern auch die Sicherheit der Datenbanknutzung verbessern.

Für den Aufrufer kapselt die gespeicherte Prozedur die SQL-Anweisung, und der Aufrufer muss den spezifischen Implementierungsprozess der logischen Funktion nicht berücksichtigen. Es ist nur ein einfacher Aufruf und kann aus Programmiersprachen wie Java und C# aufgerufen werden.

Erstellen Sie eine gespeicherte Prozedur Sie können die CREATE PROCEDURE-Anweisung verwenden, um eine gespeicherte Prozedur zu erstellen.

Das Syntaxformat lautet wie folgt:

CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体>
[Prozedurparameter [,…] ] Das Format

[ IN | OUT | INOUT ] <参数名> <类型>

Die Syntaxbeschreibung lautet wie folgt:

1) Prozedurname

Der Name der gespeicherten Prozedur, die standardmäßig in der aktuellen Datenbank erstellt wird. Wenn Sie eine gespeicherte Prozedur in einer bestimmten Datenbank erstellen müssen, stellen Sie dem Namen den Namen der Datenbank voran, db_name.sp_name.

Es ist zu beachten, dass beim Namen vermieden werden sollte, denselben Namen wie die in MySQL integrierte Funktion zu wählen, da sonst ein Fehler auftritt.

2) Prozessparameter

speichert die Parameterliste des Prozesses. Dabei ist 9d0a4e3e672631d8956928b9c4d210e0 der Parametername und 62c7bca83627d50881591b7faa9f6dc2 der Typ des Parameters (kann jeder gültige MySQL-Datentyp sein). Wenn mehrere Parameter vorhanden sind, trennen Sie diese in der Parameterliste durch Kommas. Eine gespeicherte Prozedur kann keine Parameter haben (in diesem Fall muss nach dem Namen der gespeicherten Prozedur noch ein Klammerpaar hinzugefügt werden), oder sie kann einen oder mehrere Parameter haben.

Gespeicherte MySQL-Prozeduren unterstützen drei Arten von Parametern, nämlich Eingabeparameter, Ausgabeparameter und Eingabe-/Ausgabeparameter, die jeweils durch die drei Schlüsselwörter IN, OUT und INOUT identifiziert werden. Darunter können Eingabeparameter an eine gespeicherte Prozedur übergeben werden, Ausgabeparameter werden verwendet, wenn die gespeicherte Prozedur ein Operationsergebnis zurückgeben muss, und Eingabe-/Ausgabeparameter können sowohl als Eingabeparameter als auch als Ausgabeparameter dienen.

Es ist zu beachten, dass der Parametername nicht mit dem Spaltennamen der Datentabelle identisch sein sollte. Andernfalls wird der Parametername von der SQL-Anweisung der gespeicherten Prozedur als Spaltenname behandelt, obwohl keine Fehlermeldung zurückgegeben wird , was zu unvorhersehbaren Ergebnissen führt.

3) Prozedurhauptteil

Der Hauptteil der gespeicherten Prozedur, auch gespeicherter Prozedurhauptteil genannt, enthält die SQL-Anweisungen, die beim Aufruf der Prozedur ausgeführt werden müssen. Dieser Abschnitt beginnt mit dem Schlüsselwort BEGIN und endet mit dem Schlüsselwort END. Wenn der Hauptteil der gespeicherten Prozedur nur eine SQL-Anweisung enthält, kann das BEGIN-END-Flag weggelassen werden.

Beispiel:

Erstellen Sie eine gespeicherte Prozedur mit dem Namen ShowStuScore. Die Funktion der gespeicherten Prozedur besteht darin, Informationen zur Schülernote aus der Tabelle mit den Noteninformationen der Schüler abzufragen. Die Eingabe-SQL-Anweisung und der Ausführungsprozess sind wie folgt.

mysql> DELIMITER //
mysql> CREATE PROCEDURE ShowStuScore()
    -> BEGIN
    -> SELECT * FROM tb_students_score;
    -> END //
Query OK, 0 rows affected (0.09 sec)

Die Ergebnisse zeigen, dass die gespeicherte Prozedur ShowStuScore erfolgreich erstellt wurde.

Gespeicherte Prozeduren löschenNachdem eine gespeicherte Prozedur erstellt wurde, wird sie auf dem Datenbankserver gespeichert, bis sie gelöscht wird. Wenn in der MySQL-Datenbank eine veraltete gespeicherte Prozedur vorhanden ist, müssen wir sie aus der Datenbank löschen.

Die DROP PROCEDURE-Anweisung wird in MySQL verwendet, um vorhandene gespeicherte Prozeduren in der Datenbank zu löschen. Das Syntaxformat lautet wie folgt:

DROP PROCEDURE [ IF EXISTS ] <过程名>

Die Syntaxbeschreibung lautet wie folgt:

    Prozedurname: Geben Sie den Namen der gespeicherten Prozedur an, die gelöscht werden soll.
  • IF EXISTS:指定这个关键字,用于防止因删除不存在的存储过程而引发的错误。

注意:存储过程名称后面没有参数列表,也没有括号,在删除之前,必须确认该存储过程没有任何依赖关系,否则会导致其他与之关联的存储过程无法运行。

实例

下面删除存储过程 ShowStuScore,SQL 语句和运行结果如下:

mysql> DROP PROCEDURE ShowStuScore;
Query OK, 0 rows affected (0.08 sec)

删除后,可以通过查询 information_schema 数据库下的 routines 表来确认上面的删除是否成功。SQL 语句和运行结果如下:

mysql> SELECT * FROM information_schema.routines WHERE routine_name=&#39;ShowStuScore&#39;;
Empty set (0.03 sec)

结果显示,没有查询出任何记录,说明存储过程 ShowStuScore 已经被删除了。

(推荐教程:mysql视频教程

Das obige ist der detaillierte Inhalt vonWas ist eine gespeicherte Prozedur in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn