Réutiliser le code de procédure stockéeDe la même manière que vous pouvez créer des balises personnalisées à partir de fragments de code ColdFusion et ensuite appeler ces balises personnalisées à partir de ColdFusion autres modèles, vous pouvez faire à peu près la même chose avec les procédures stockées. Les procédures stockées peuvent appeler d'autres procédures stockées de la même façon qu'elles sont appelées à partir ColdFusion mais sans le tag interface. Disons, par exemple, que vous avez une procédure stockée, sp_GetInventoryItem, qui récupère une ligne InventoryItem basée sur la valeur ItemNumber passé . Vous utilisez sp_GetInventoryItem au long de votre application e-commerce pour obtenir des informations produit comme utilisateur de parcourir le catalogue, et vous l'utilisent aussi pour récupérer des objets de l'inventaire des travaux d'administration. Maintenant, vous voulez intégrer sp_GetInventoryItem avec une autre procédure stockée sp_DiscountItem-à-dire les remises des prix d'un article selon que l'utilisateur a entré un code valide de coupons-rabais au début de sa session shopping. Vous pouvez répéter ce code pour récupérer l'élément d'inventaire et d'effectuer la remise dans chaque procédure stockée qui exige une telle fonction, ou vous pouvez faire la maintenance du code plus facilement en brisant des exemples de code commun dans leurs propres procédures et de les appeler en cas de besoin, comme le montre dans le code. - Cette procédure sera appelée par l'instruction CREATE PROCEDURE sp_DiscountItem sp_GetInventoryItem (@ giiItemNumber VARCHAR (15), @ giiDescription varchar (40) OUTPUT, @ giiUnitPrice Numeric (12,2) OUTPUT, @ sortie giiAvailableToSell Integer, @ giiComments Varchar (200) OUTPUT ) AS SELECT @ giiDescription = Description, @ = giiUnitPrice UnitPrice, @ giiAvailableToSell = AvailableToSell, @ giiComments = Commentaires InventoryItem DE CAS ItemNumber = @ return giiItemNumber go - Cette procédure sera également appelée par CREATE PROCEDURE sp_DiscountItem sp_GetAmountDue (@ Couponcode varchar (16), @ AmountDue Numeric (12,2) OUTPUT) AS DECLARE @ Bit racheté, @ PercentDiscount Numeric (12,2 ) SELECT @ Redeemed = racheté, PercentDiscount @ = A partir Couponcode coupon PercentDiscount WHERE = @ Couponcode IF (@ @ ROWCOUNT! = 1) BEGIN RETURN - Coupon n'existe pas, aucun changement de prix END IF (@ Redeemed = 1) BEGIN RETURN - Coupon déjà racheté, aucun changement de prix END ELSE BEGIN SELECT @ AmountDue = @ AmountDue * (1 - @ 100 / PercentDiscount) return end go - C'est la procédure parent qui est appelée CREATE PROCEDURE sp_DiscountItem (@ diCouponCode varchar (16) , @ diItemNumber VARCHAR (15), @ diDescription varchar (40) OUTPUT, @ diUnitPrice Numeric (12,2) OUTPUT, @ sortie diAvailableToSell Integer, @ diComments Varchar (200) OUTPUT) AS sp_GetInventoryItem EXEC ( giiItemNumber = @ @ diItemNumber, @ giiDescription = @ SORTIE diDescription, @ giiAvailableToSell giiUnitPrice = @ SORTIE diUnitPrice, @ @ = SORTIE diAvailableToSell, @ giiComments = @ diComments SORTIE) sp_GetAmountDue EXEC (@ @ = Couponcode diCouponCode, @ AmountDue = @ SORTIE diUnitPrice) RETOUR aller
La première fois que nous ayons jamais codé une telle chose, la tête près de Split Wide Open de confusion! Quel paramètre est l'entrée à laquelle la production, et comment celui-ci passe en retrait à celle-là et ainsi de suite? Eh bien, nous avons finalement trouvé un façon d'expliquer une procédure à l'aide de paramètres de sortie qui appeler un autre d'une manière qui a du sens. Vous trouvez un fichier Adobe Acrobat nommée Tracing.pdf paramètre de sortie, qui contient le code précédent répété une fois pour chaque étape du processus de passage de paramètres, avec un schéma pour chaque étape et une explication en anglais courant de ce qui se passe à chaque étape. Nous suivons un de ces paramètres OUTPUT-la-UnitPrice sur son voyage complet à travers toutes les procédures stockées qui l'utilisent et de montrer comment les valeurs sont acquis et transmis entre les paramètres. Nous vous suggérons fortement de prendre quelques instants pour ouvrir ce document et de suivre chaque étape du processus. Afin de valoriser réellement les procédures stockées dans vos applications ColdFusion, vous avez besoin pour bien comprendre ce sujet complexe. Nous avons répété la description anglaise plaine de chaque étape dans la liste suivante numérotées, mais ayant le schéma à la main pendant que vous lisez aide vraiment. Le processus commence avec l'ensemble des sp_DiscountItem procédure qui est appelée à partir de ColdFusion comme suit: 1. sp_DiscountItem est la première procédure stockée appelée. Le paramètre de sortie @ diUnitPrice commence avec une valeur NULL; à ce stade, @ diUnitPrice est juste un seau "vide" de recevoir une valeur de retour de sp_DiscountItem après la fin d'exécution, puis renvoyer cette valeur à l'application cliente. SORTIE sp_DiscountItem dit: «Si vous n'avez rien à la valeur de @ diUnitPrice lors de votre exécution, SORTIE sa nouvelle valeur de retour dans @ diUnitPrice de sorte que la nouvelle valeur peut être utilisée par n'importe quel application ou de la procédure vous a appelé." Si @ diUnitPrice n'a pas ont le qualificatif de sortie, elle resterait sp_DiscountItem NULL après avoir terminé l'exécution. 2. @ diUnitPrice est la valeur nourris au paramètre @ SORTIE giiItemUnitPrice de l'appel à sp_GetInventoryItem. À l'heure actuelle, il reste seulement une valeur NULL. 3. @ giiUnitPrice initialise avec la valeur NULL fourni par @ diUnitPrice et est maintenant prêt à appeler sp_GetInventoryItem. 4. sp_GetInventoryItem est maintenant appelée avec @ giiUnitPrice comme paramètre de sortie. Elle contient encore une valeur NULL. C'est le travail seulement à ce moment est de fournir un seau vide dans laquelle sp_GetInventoryItem mai attribuer une valeur. 5. Après sp_GetInventoryItem s'exécute, elle sélectionne la valeur de la colonne de InventoryItem.UnitPrice dans le paramètre de sortie @ giiUnitPrice. 6. @ giiUnitPrice contient maintenant les prix à l'unité extraites de la question des stocks plutôt qu'une valeur NULL. 7. Parce @ giiUnitPrice est un paramètre OUTPUT sp_GetInventoryItem, sa nouvelle valeur est sortie de nouveau dans @ sp_DiscountItem intérieur giiUnitPrice, qui vient d'appeler sp_GetInventoryItem. 8. Cette nouvelle valeur de @ giiUnitPrice est en outre production pour la ramener dans le paramètre @ diUnitPrice nourris qu'à l'origine la valeur NULL à @ giiUnitPrice, parce @ diUnitPrice a le qualificatif SORTIE dans l'appel à sp_GetInventoryItem. Now @ diUnitPrice contient la même valeur de retour de sp_GetInventoryItem. 9. Vous avez maintenant la valeur non actualisée le prix unitaire du casier élément d'inventaire entreposé dans @ diUnitPrice, et vous pouvez donner cette valeur à sp_GetAmountDue une réduction de prix possible. 10. @ AmountDue est initialisée avec la valeur stockée dans @ diUnitPrice et est maintenant prêt à appeler sp_GetAmountDue. 11. sp_GetAmountDue est maintenant appelée avec @ AmountDue comme paramètre de sortie. Elle contient actuellement la valeur du prix unitaire de retour de l'enregistrement du point d'inventaire. 12. sp_GetAmountDue mai ou mai pas modifier la valeur stockée dans @ AmountDue, mais si c'est le cas, la valeur modifiée est rétabli dans @ AmountDue. 13. Parce @ AmountDue est un paramètre OUTPUT sp_GetAmountDue, sa nouvelle valeur est sortie de nouveau dans @ sp_DiscountItem intérieur AmountDue, qui vient d'appeler sp_GetAmountDue. 14. Cette nouvelle valeur de @ AmountDue est en outre production pour la ramener dans le paramètre @ diUnitPrice nourris qu'à l'origine la valeur non modifiée le prix unitaire à @ AmountDue, parce @ diUnitPrice a le qualificatif SORTIE dans l'appel à sp_GetAmountDue. Now @ diUnitPrice contient le (éventuellement) unité modifiée de retour de valeur aux prix sp_GetAmountDue. 15. Parce @ diUnitPrice est un paramètre OUTPUT sp_DiscountItem, @ diUnitPrice peut sortir sa finale, éventuellement modifié de la valeur à l'application ColdFusion qui l'a appelé en premier lieu. un article présenté par Michael Patterson Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite. Important: Cet article «La réutilisation de code stocké procédure" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.
|
|||||
| Online: 135 users browsing the articles directory |
|
|