Maison >base de données >tutoriel mysql >Explication détaillée de l'opération de suppression de procédure stockée MySQL et exemples d'utilisation des paramètres
Supprimer les procédures stockées
Une fois qu'une procédure stockée est créée, elle est enregistrée sur le serveur pour être utilisée jusqu'à sa suppression. La commande delete (similaire à l'instruction introduite au chapitre 21) supprime la procédure stockée du serveur. Pour supprimer la procédure stockée nouvellement créée, vous pouvez utiliser l'instruction suivante :
Entrée :
drop procedure productpricing;
Analyse : Cette instruction supprime la procédure stockée nouvellement créée. Veuillez noter que le () suivant n'est pas utilisé, seul le nom de la procédure stockée est donné.
Supprimer uniquement si existe Si la procédure spécifiée n'existe pas, DROP PROCEDURE générera une erreur. Utilisez DROP PROCEDURE IF EXISTS lorsqu'une procédure existe et que vous souhaitez la supprimer (sans générer d'erreur si la procédure n'existe pas).
Utilisation des paramètres
productpricing n'est qu'une simple procédure stockée qui affiche simplement le résultat de l'instruction SELECT. Généralement, les procédures stockées n'affichent pas les résultats, mais renvoient les résultats aux variables que vous spécifiez.
Variable Un emplacement spécifique en mémoire utilisé pour stocker temporairement des données. Ce qui suit est une version modifiée de productpricing (vous ne pouvez pas recréer cette procédure stockée sans la supprimer au préalable) :
Entrée :
create procedure productpricing( out pl decimal(8,2), out ph decimal(8,2), out pa decimal(8,2) ) begin select min(prod_price) into pl from products; select max(prod_price) into ph from products; select avg(prod_price) into pa from products; end;
Analyse : Cette procédure stockée accepte 3 paramètres : pl Le prix le plus bas des produits de stockage, ph le prix le plus élevé des produits de stockage et pa le prix moyen des produits de stockage. Chaque argument doit avoir le type spécifié, ici les valeurs décimales sont utilisées. Le mot-clé OUT indique que le paramètre correspondant permet de passer une valeur hors de la procédure stockée (retour à l'appelant). MySQL prend en charge les types de paramètres IN (passés dans une procédure stockée), OUT (passés hors d'une procédure stockée, comme utilisé ici) et INOUT (passés dans et hors d'une procédure stockée). Le code de la procédure stockée se trouve dans les instructions BEGIN et END qui, comme vous l'avez vu précédemment, sont une série d'instructions SELECT qui récupèrent les valeurs puis les enregistrent dans les variables appropriées (en spécifiant le mot-clé INTO).
Types de données des paramètres Les types de données autorisés pour les paramètres des procédures stockées sont les mêmes que ceux utilisés dans les tables. L'annexe D répertorie ces types.
Notez que le jeu d'enregistrements n'est pas un type autorisé. Par conséquent, plusieurs lignes et colonnes ne peuvent pas être renvoyées via un seul paramètre. C'est pourquoi l'exemple précédent utilise 3 paramètres (et 3 instructions SELECT). Afin d'appeler cette procédure stockée modifiée, 3 noms de variables doivent être spécifiés comme suit :
Entrée :
call productpricing(@price low, @pricehigh, @priceaverage);
Analyse : Puisque cette procédure stockée nécessite 3 paramètres, elle doit passer exactement 3 paramètres, ni plus, ni moins. Ainsi, cette instruction CALL donne 3 paramètres. Ce sont les noms des 3 variables où la procédure stockée contiendra les résultats.
Nom de la variable Toutes les variables MySQL doivent commencer par @.
Lorsqu'elle est appelée, cette instruction n'affiche aucune donnée. Il renvoie des variables qui peuvent ensuite être affichées (ou utilisées dans d'autres traitements). Afin d'afficher le prix moyen du produit récupéré, procédez comme suit :
Entrée :
select @priceaverage;
Sortie :
Pour obtenir 3 valeurs, vous pouvez utiliser l'instruction suivante :
Entrée :
select @pricehigh,@pricrlow,@priceaverage;
Sortie :
Ce qui suit est un autre exemple, cette fois utilisant les paramètres IN et OUT. ordertotal accepte le numéro de commande
et renvoie le total de la commande :
Entrée :
create procedure ordertotal( in onumber int, out ototal decimal(8,2) ) begin select sum(item_price*quantity) from orderitems where order_num = onumber into ototal; end;
Analyse : le numéro est défini comme IN car le numéro de commande est passé dans la procédure stockée. ototal est défini comme OUT car le total est renvoyé par la procédure stockée. L'instruction SELECT utilise ces deux paramètres, la clause WHERE utilise onumber pour sélectionner la ligne correcte et INTO utilise ototal pour stocker le total calculé.
Pour appeler cette nouvelle procédure stockée, vous pouvez utiliser l'instruction suivante :
Entrée :
call ordertotal(20005,@total);
Analyse : Deux paramètres doivent être passés à ordertotal le premier paramètre ; est le numéro de commande et le deuxième paramètre est le nom de la variable contenant le total calculé. Pour afficher ce total, procédez comme suit :
Entrée :
select @total;
Sortie :
Analyser : @total a été renseigné par l'instruction CALL de ordertotal et SELECT affiche la valeur qu'il contient. Afin d'obtenir l'affichage total d'une autre commande, il faut appeler à nouveau la procédure stockée puis réafficher la variable :
Entrée :
call ordertotal(20009,@total); select @total;
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!