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:
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 的所有信息。参数的类型可以是 IN
、OUT
或 INOUT
,分别表示输入、输出和输入/输出类型。
执行存储过程的语句为:
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
的记录。
该存储过程使用游标来遍历结果集,并输出每个记录的 id
和 name
字段值。
执行存储过程的语句为:
CALL get_persons_by_age(20);
这条语句将返回 person
表中所有 age
为 20 的记录,并输出它们的 id
和 name
rrreee# 🎜 🎜#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.
person
zurü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)) 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);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)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 person
zurü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!