Maison > Article > base de données > procédure stockée de requête MySQL
MySQL est un système de gestion de bases de données relationnelles open source qui prend en charge plusieurs langages de programmation. Lors du développement d'applications, nous devons souvent exécuter des instructions de requête SQL complexes. À ce stade, nous pouvons utiliser des procédures stockées MySQL pour terminer le travail.
Une procédure stockée est une collection d'instructions SQL qui peuvent accepter des paramètres et renvoyer un jeu de résultats. Par rapport à l'exécution d'instructions SQL seule, l'utilisation de procédures stockées présente les avantages suivants :
Regardons quelques exemples courants de procédures stockées MySQL.
(1) Créer une procédure stockée simple
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;
Le code ci-dessus crée une procédure stockée nommée get_person
, avec un paramètre d'entrée id
et renvoie Toutes les informations avec le identifiant spécifié dans la table personne
. Le type de paramètre peut être IN
, OUT
ou INOUT
, représentant respectivement les types d'entrée, de sortie et d'entrée/sortie.
person
L'enregistrement avec id
à 1 dans le tableau. #🎜🎜##🎜🎜#(2) Créer une procédure stockée avec des paramètres de sortie #🎜🎜##🎜🎜#CREATE PROCEDURE get_status
(IN id INT, OUT status VARCHAR(50)) id
et ajoute la table order
Le status correspondant à id
est renvoyée à la variable status
. #🎜🎜##🎜🎜#L'instruction pour exécuter la procédure stockée est : #🎜🎜##🎜🎜#CALL get_status(1, @status);status
de l'enregistrement dans la table order
avec id
= 1 sera sortie. #🎜🎜##🎜🎜#(3) Créer une procédure stockée avec un curseur #🎜🎜##🎜🎜#CREATE PROCEDURE get_persons_by_age
(IN age INT)age
et renvoie tous les age
dans la personne
table Enregistrements avec le code> égal à age
. #🎜🎜##🎜🎜#Cette procédure stockée utilise un curseur pour parcourir l'ensemble de résultats et afficher les valeurs des champs id
et name
pour chaque enregistrement. #🎜🎜##🎜🎜#L'instruction pour exécuter la procédure stockée est : #🎜🎜##🎜🎜#CALL get_persons_by_age(20);#🎜🎜##🎜🎜#Cette instruction renverra person
Tous les enregistrements de la table dont age
est 20 et affichent leurs valeurs id
et name
. #🎜🎜##🎜🎜#En bref, l'utilisation de procédures stockées MySQL peut facilement effectuer certaines opérations de base de données complexes et améliorer l'efficacité et la sécurité de l'application. Les développeurs peuvent concevoir des procédures stockées appropriées en fonction des besoins réels pour obtenir des performances et une maintenabilité optimales. #🎜🎜#Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!