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
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 :
Entrée :
call ordertotal(20005,1,@total); select @total;
Sortie :
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!