Maison  >  Article  >  base de données  >  procédure stockée de requête MySQL

procédure stockée de requête MySQL

PHPz
PHPzoriginal
2023-05-14 09:54:07882parcourir

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 :

  1. Simplifie le code de l'application, rendant le programme plus facile à maintenir et à mettre à jour.
  2. Les procédures stockées s'exécutent plus rapidement que l'exécution d'instructions SQL seules.
  3. Les procédures stockées peuvent garantir la cohérence et la sécurité des données.

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 的所有信息。参数的类型可以是 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;

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.

#🎜🎜#L'instruction pour exécuter la procédure stockée est : #🎜🎜##🎜🎜#CALL get_person(1);#🎜🎜##🎜🎜#Cette instruction renverra 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))
BEGIN#🎜🎜#rrreee#🎜🎜#END;#🎜🎜##🎜🎜#Cette procédure stockée accepte un paramètre d'entrée 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);
SELECT @status;#🎜🎜##🎜🎜#This instruction La valeur du champ 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)
BEGIN#🎜🎜# rrreee #🎜🎜#END;#🎜🎜##🎜🎜#Cette procédure stockée accepte un paramètre d'entrée 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:modification par lots mysqlArticle suivant:modification par lots mysql