Maison  >  Article  >  base de données  >  Procédures stockées MySQL - Créez des procédures stockées intelligentes et vérifiez les procédures stockées

Procédures stockées MySQL - Créez des procédures stockées intelligentes et vérifiez les procédures stockées

巴扎黑
巴扎黑original
2017-05-18 11:01:431504parcourir

Créer des procédures stockées intelligentes

Toutes les procédures stockées utilisées jusqu'à présent encapsulent essentiellement des instructions SELECT simples de MySQL. Bien qu'il s'agisse tous d'exemples valables de procédures stockées, elles font beaucoup de choses que vous pourriez faire directement avec ces instructions encapsulées (si elles apportent quelque chose de plus, elles rendent les choses plus compliquées). La puissance des procédures stockées n’apparaît véritablement que lorsqu’elles incluent des règles métier et un traitement intelligent.

Considérez ce scénario. Vous devez obtenir le même total de commande qu'avant, mais vous devez ajouter la taxe de vente au total, mais uniquement pour certains clients (peut-être ceux de votre état). Ensuite, vous devez faire les choses suivantes :

1. Obtenez le total (comme avant)

2. Ajoutez la taxe de vente au total

3. .Renvoie le total (avec ou sans taxe).

Le travail complet de la procédure stockée est le suivant :

Entrée :

-- Name:ordertotal
-- Parmeters:onumber = order number
--           taxable = 0 if not taxable
--           ototal = order total variable
create procedure ordretotal(
in onumber int,
in taxable boolean,
out ototal decimal(8,2)
)comment 'obtain order total,optiomally adding tax'
begin
-- dexlare variable for total
declare total decimal(8,2);
-- delcare tax percentage
declare taxtate int default 6;
-- get the ordertotal
select sum(item_price*quantity)
from orderitems
where order_num = onumber into total;
-- is this taxable?
if taxable then
-- yes,so add taxrate to the total
select total+(total/100*taxrate) into total;
end if;
-- and finally,save to out variable
select total into ototal;
end;

Analyse : Cette procédure stockée a beaucoup de changements. Tout d’abord, ajoutez un commentaire (placez-- devant). Ceci est particulièrement important à mesure que la complexité des procédures stockées augmente. Un paramètre supplémentaire taxable a été ajouté, qui est un booléen (vrai si la taxe doit être augmentée, faux sinon). Dans le corps de la procédure stockée, deux variables locales sont définies à l'aide de l'instruction DECLARE. DECLARE nécessite de spécifier un nom de variable et un type de données, et prend également en charge les valeurs par défaut facultatives (la valeur par défaut du taux d'imposition dans cet exemple est définie sur 6 %). L'instruction SELECT a été modifiée afin que ses résultats soient stockés dans total (une variable locale) au lieu de ototal . L'instruction IF vérifie si taxable est vrai et, si c'est le cas, utilise une autre instruction SELECT pour ajouter la taxe de vente au total de la variable locale. Enfin, utilisez une autre instruction SELECT pour enregistrer le total (ce qui peut ou non augmenter la taxe de vente) dans ototal .

Mot-clé COMMENT La procédure stockée dans cet exemple inclut une valeur COMMENT dans l'instruction CREATE PROCEDURE. Ce n'est pas obligatoire, mais s'il est indiqué, il apparaîtra dans les résultats de SHOW PROCEDURE STATUS. Il s’agit évidemment d’une procédure stockée plus avancée et plus puissante. Pour le tester, utilisez les deux instructions suivantes :

Entrée :

call ordertotal(20005,0,@total);
select @total;

Sortie :

Procédures stockées MySQL - Créez des procédures stockées intelligentes et vérifiez les procédures stockées

Entrée :

call ordertotal(20005,1,@total);
select @total;

Sortie :

Procédures stockées MySQL - Créez des procédures stockées intelligentes et vérifiez les procédures stockées

Analyse : la valeur BOOLÉENNE spécifiée comme 1 signifie vrai, spécifiée comme 0 signifie faux (en fait, les valeurs non nulles sont considérées comme vraies , Seul 0 est considéré comme faux). La taxe de vente peut être ajoutée conditionnellement au total de la commande en spécifiant 0 ou 1 pour l'argument du milieu.

Instruction IF Cet exemple donne l'utilisation de base de l'instruction IF de MySQL. L'instruction IF prend également en charge les clauses ELSEIF et ELSE (la première utilise également une clause THEN, la seconde non). Nous verrons d'autres utilisations de IF (et d'autres instructions de contrôle de flux) dans les prochains chapitres.


Examen des procédures stockées

Pour afficher l'instruction CREATE utilisée pour créer une procédure stockée, utilisez SHOW Instruction CREATE

PROCEDURE :

Entrée :

show create procedure ordetotal;

Pour obtenir une liste des procédures stockées comprenant des détails tels que quand et par qui elles ont été créées, utilisez SHOW PROCEDURE STATUS .

Limiter les résultats de l'état du processus AFFICHER L'ÉTAT DE LA PROCÉDURE Répertorie toutes les procédures stockées. Pour limiter sa sortie, vous pouvez utiliser LIKE pour spécifier un modèle de filtre, par exemple :

afficher l'état de la procédure comme 'ordertotal' ;

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