Heim  >  Artikel  >  Datenbank  >  Gespeicherte MySQL-Abfrageprozedur

Gespeicherte MySQL-Abfrageprozedur

PHPz
PHPzOriginal
2023-05-14 09:54:07877Durchsuche

MySQL ist ein relationales Open-Source-Datenbankverwaltungssystem, das mehrere Programmiersprachen unterstützt. Bei der Entwicklung von Anwendungen müssen wir häufig einige komplexe SQL-Abfrageanweisungen ausführen. Zu diesem Zeitpunkt können wir gespeicherte MySQL-Prozeduren verwenden, um die Arbeit abzuschließen.

Eine gespeicherte Prozedur ist eine Sammlung von SQL-Anweisungen, die Parameter akzeptieren und eine Ergebnismenge zurückgeben können. Im Vergleich zur alleinigen Ausführung von SQL-Anweisungen bietet die Verwendung gespeicherter Prozeduren die folgenden Vorteile:

  1. Vereinfacht den Code der Anwendung und erleichtert so die Wartung und Aktualisierung des Programms.
  2. Gespeicherte Prozeduren werden schneller ausgeführt als die alleinige Ausführung von SQL-Anweisungen.
  3. Gespeicherte Prozeduren können Datenkonsistenz und -sicherheit gewährleisten.

Sehen wir uns einige gängige Beispiele für gespeicherte MySQL-Prozeduren an.

(1) Erstellen Sie eine einfache gespeicherte Prozedur

CREATE PROCEDURE get_person(IN id INT)
BEGINget_person(IN id INT)
BEGIN

SELECT * FROM person WHERE id = id;

END;

上面的代码创建了一个名为 get_person 的存储过程,带有一个输入参数 id,返回 person 表中指定 id 的所有信息。参数的类型可以是 INOUTINOUT,分别表示输入、输出和输入/输出类型。

执行存储过程的语句为:

CALL get_person(1);

这条语句将返回 person 表中 id 为 1 的记录。

(2) 创建一个带有输出参数的存储过程

CREATE PROCEDURE get_status(IN id INT, OUT status VARCHAR(50))
BEGIN

SELECT status FROM order WHERE id = id INTO status;

END;

这个存储过程接受一个输入参数 id,并将 order 表中 id 对应的 status 字段值返回到 status 变量中。

执行存储过程的语句为:

CALL get_status(1, @status);
SELECT @status;

这条语句将输出 order 表中 id 为 1 的记录的 status 字段值。

(3) 创建一个带有游标的存储过程

CREATE PROCEDURE get_persons_by_age(IN age INT)
BEGIN

DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE pid INT;
DECLARE pname VARCHAR(50);
DECLARE persons CURSOR FOR SELECT id, name FROM person WHERE age = age;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN persons;
repeat_row: LOOP
    FETCH persons INTO pid, pname;
    IF done THEN
        LEAVE repeat_row;
    END IF;
    SELECT pid, pname;
END LOOP;
CLOSE persons;

END;

这个存储过程接受一个输入参数 age,并返回 person 表中所有 age 等于 age 的记录。

该存储过程使用游标来遍历结果集,并输出每个记录的 idname 字段值。

执行存储过程的语句为:

CALL get_persons_by_age(20);

这条语句将返回 person 表中所有 age 为 20 的记录,并输出它们的 idnamerrreee# 🎜 🎜#END;

Der obige Code erstellt eine gespeicherte Prozedur mit dem Namen get_person, mit einem Eingabeparameter id und gibt Alle Informationen mit dem zurück angegebene ID in der Tabelle person. Der Parametertyp kann IN, OUT oder INOUT sein und jeweils Eingabe-, Ausgabe- und Eingabe-/Ausgabetypen darstellen.

#🎜🎜#Die Anweisung zum Ausführen der gespeicherten Prozedur lautet: #🎜🎜##🎜🎜#CALL get_person(1);#🎜🎜##🎜🎜#Diese Anweisung gibt personzurück > Der Datensatz mit id in der Tabelle ist 1. #🎜🎜##🎜🎜#(2) Erstellen Sie eine gespeicherte Prozedur mit Ausgabeparametern #🎜🎜##🎜🎜#CREATE PROCEDURE get_status(IN id INT, OUT status VARCHAR(50))
BEGIN#🎜🎜#rrreee#🎜🎜#END;#🎜🎜##🎜🎜#Diese gespeicherte Prozedur akzeptiert einen Eingabeparameter id und fügt die Tabelle order hinzu Der Feldwert code>status, der der id entspricht, wird an die Variable status zurückgegeben. #🎜🎜##🎜🎜#Die Anweisung zum Ausführen der gespeicherten Prozedur lautet: #🎜🎜##🎜🎜#CALL get_status(1, @status);
SELECT @status;#🎜🎜##🎜🎜#This Anweisung Der Wert des Felds status des Datensatzes in der Tabelle order, dessen id 1 ist, wird ausgegeben. #🎜🎜##🎜🎜#(3) Erstellen Sie eine gespeicherte Prozedur mit einem Cursor #🎜🎜##🎜🎜#CREATE PROCEDURE get_persons_by_age(IN age INT)
BEGIN#🎜🎜# rrreee #🎜🎜#ENDE;#🎜🎜##🎜🎜#Diese gespeicherte Prozedur akzeptiert einen Eingabeparameter Alter und gibt alle Alter in der Person zurück Tabellendatensätze mit Code> gleich Alter. #🎜🎜##🎜🎜#Diese gespeicherte Prozedur verwendet einen Cursor, um die Ergebnismenge zu durchlaufen und die Feldwerte id und name für jeden Datensatz auszugeben. #🎜🎜##🎜🎜#Die Anweisung zum Ausführen der gespeicherten Prozedur lautet: #🎜🎜##🎜🎜#CALL get_persons_by_age(20);#🎜🎜##🎜🎜#Diese Anweisung gibt personzurück > Alle Datensätze in der Tabelle, deren age 20 ist, und geben ihre Werte für id und name aus. #🎜🎜##🎜🎜#Kurz gesagt: Durch die Verwendung gespeicherter MySQL-Prozeduren können einige komplexe Datenbankvorgänge problemlos ausgeführt und die Effizienz und Sicherheit der Anwendung verbessert werden. Entwickler können geeignete gespeicherte Prozeduren basierend auf den tatsächlichen Anforderungen entwerfen, um optimale Leistung und Wartbarkeit zu erreichen. #🎜🎜#

Das obige ist der detaillierte Inhalt vonGespeicherte MySQL-Abfrageprozedur. 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
Vorheriger Artikel:MySQL-Batch-ÄnderungNächster Artikel:MySQL-Batch-Änderung