Wiederverwenden von Code der gespeicherten Prozedur

Auf die gleiche Weise, dass Sie benutzerdefinierte Tags aus Fragmenten von ColdFusion-Code erstellen können, und rufen Sie dann die benutzerdefinierten Tags aus anderen ColdFusion-Vorlagen können Sie praktisch die gleiche Sache mit gespeicherten Prozeduren. Gespeicherte Prozeduren aufrufen können andere gespeicherte Prozeduren viel der gleiche Weg, dass sie von ColdFusion eingefordert, aber ohne Tag-basierte Oberfläche. Nehmen wir zum Beispiel, dass Sie eine gespeicherte Prozedur, sp_GetInventoryItem, dass ein InventoryItem Zeile auf dem ItemNumber Wert übergeben Basis ruft . Sie verwenden sp_GetInventoryItem in Ihrem E-Commerce-Anwendung auf Produktinformationen als Nutzer den Katalog blättern, und Sie auch nutzen, um Inventar-Gegenstände für die administrative Arbeit abrufen zu erhalten. Nun müssen Sie sp_GetInventoryItem mit einer anderen gespeicherten Prozedur integrieren möchten-sp_DiscountItem-dass der Preis für ein Element auf, ob der Benutzer gibt einen gültigen Gutscheincode zu Beginn der Sitzung seine Einkäufe auf Rabatte. Wiederholen Sie den Code in das Inventar Element abzurufen, und führen Sie den Rabatt in den einzelnen gespeicherten Prozedur, die eine solche Funktion erforderlich ist oder Sie können Code Wartung einfacher durch Brechen Beispiele von gemeinsamen Code in ihre eigenen Verfahren und nannte sie, wo nötig, wie gezeigt im Code.

- Dieses Verfahren wird von sp_DiscountItem CREATE PROCEDURE sp_GetInventoryItem (@ giiItemNumber varchar (15), @ giiDescription VARCHAR (40) OUTPUT, @ giiUnitPrice Numeric (12,2) OUTPUT, @ giiAvailableToSell Integer OUTPUT, @ giiComments genannt werden varchar (200) OUTPUT ) AS SELECT @ giiDescription = Beschreibung, @ giiUnitPrice = UnitPrice, @ giiAvailableToSell = AvailableToSell @ giiComments = Kommentar VON InventoryItem WHERE
ItemNumber = @ giiItemNumber RETURN gehen - Dieses Verfahren wird auch durch sp_DiscountItem CREATE PROCEDURE sp_GetAmountDue (@ Gutscheincode VARCHAR (16), @ AmountDue Numeric (12,2) OUTPUT) AS DECLARE @ Eingelöste Bit, @ PercentDiscount Numeric (12,2 genannt werden ) SELECT @ Eingelöste = erlöst, @ PercentDiscount = PercentDiscount AUS DEM Coupon Gutscheincode Gutscheincode = @ IF (@ @ ROWCOUNT! = 1) BEGIN RETURN - Coupon ist nicht vorhanden, keine Preisänderung END IF (@ Eingelöste = 1) BEGIN RETURN - Gutschein bereits eingelöst, keine Preisänderung END ELSE BEGIN SELECT @ AmountDue = @ AmountDue * (1 - @ PercentDiscount / 100) RETURN END gehen - und dies ist die Muttergesellschaft Verfahren, das heißt CREATE PROCEDURE sp_DiscountItem (@ diCouponCode VARCHAR (16) @ diItemNumber varchar (15), @ diDescription VARCHAR (40) OUTPUT, @ diUnitPrice Numeric (12,2) OUTPUT, @ diAvailableToSell Integer OUTPUT, @ diComments varchar (200) OUTPUT) AS EXEC sp_GetInventoryItem (
@ giiItemNumber = @ diItemNumber @ giiDescription = @ diDescription OUTPUT, @ giiUnitPrice = @ diUnitPrice OUTPUT, @ giiAvailableToSell = @ diAvailableToSell OUTPUT, @ giiComments = @ diComments OUTPUT) EXEC sp_GetAmountDue (@ Gutscheincode = @ diCouponCode @ AmountDue = @ diUnitPrice OUTPUT) RETURN gehen
  

Das erste Mal, dass wir jemals so etwas kodiert, den Kopf fast Split Wide Open von Verwirrung! Welche Parameter ist der Eingang, an den Ausgang, und wie diese ein nicht wieder passieren, dass ein und so weiter? Nun, wir endlich herausgefunden, ein Weg zu einem Verfahren mit OUTPUT-Parameter, die ein anderes Gespräch in einer Weise, die Sinn macht zu erklären. Sie finden eine Adobe Acrobat-Datei mit dem Namen Tracing.pdf Output Parameter, die die vorstehenden Inserat einmal wiederholt für jeden Schritt in der Parameterübergabe Prozess, zusammen mit einem Diagramm für jeden Schritt und eine Erklärung in einfachem Englisch, was geschieht in jedem Schritt enthält. Wir folgen einem dieser OUTPUT-Parameter-the-UnitPrice auf seine komplette Reise durch alle gespeicherten Prozeduren, die es nutzen und zeigen, wie Werte erworben worden sind und zwischen Parameter übergeben. Außerdem sollten Sie unbedingt, dass Sie ein paar Minuten Zeit nehmen, dieses Dokument zu öffnen und jedem folgen Schritt des Prozesses. Um wirklich zu nutzen, gespeicherte Prozeduren in der ColdFusion-Anwendungen, müssen Sie in vollem Umfang dieses komplizierte Thema zu verstehen. Wir haben die einfachem Englisch Beschreibung der einzelnen Schritte in den folgenden nummerierten Liste wiederholt, aber unter dem Diagramm auf der Hand, wie Sie sie lesen, wirklich hilft. Der Prozess beginnt mit der alle Verfahren, die von ColdFusion sp_DiscountItem aufgerufen wird, wie folgt:

1. sp_DiscountItem ist das erste gespeicherte Prozedur aufgerufen. Das @ diUnitPrice Ausgangsparameter beginnt mit einem NULL-Wert, an dieser Stelle @ diUnitPrice ist nur eine "leere Eimer" auf einen Wert von sp_DiscountItem zurück erhalten, nachdem es ausgeführt beendet und kehren Sie dann diesen Wert auf die Client-Anwendung. OUTPUT sp_DiscountItem sagt: "Wenn Sie nichts tun, um den Wert von @ diUnitPrice während der Ausführung, OUTPUT ihren neuen Wert wieder in @ diUnitPrice, so dass der neue Wert kann mit beliebigen Anwendung oder Verfahren verwendet werden, als Sie." Falls @ diUnitPrice nicht haben die OUTPUT-Qualifikationsspiel, wäre es NULL bleiben nach sp_DiscountItem fertig ausgeführt.

2. @ diUnitPrice ist der Wert der an sie verfüttert @ giiItemUnitPrice OUTPUT-Parameter des Aufrufs von sp_GetInventoryItem. Im Moment ist es immer noch nur ein NULL-Wert.

3. @ giiUnitPrice initialisiert mit der NULL-Wert von @ diUnitPrice geliefert und ist nun bereit, sp_GetInventoryItem nennen.

4. sp_GetInventoryItem ist jetzt mit @ giiUnitPrice als OUTPUT-Parameter aufgerufen. Es enthält noch einen NULL-Wert. Es hat nur die Aufgabe an diesem Punkt ist es, einen leeren Eimer, in die sp_GetInventoryItem einen Wert Platz vorsehen.

5. Nach sp_GetInventoryItem führt, wählt er die Spalte Wert InventoryItem.UnitPrice in der OUTPUT-Parameter @ giiUnitPrice.

6. @ giiUnitPrice enthält nun den Preis je Maßeinheit aus dem Inventar Element nicht als NULL-Wert abgerufen werden.

7. Da @ giiUnitPrice ein OUTPUT-Parameter in sp_GetInventoryItem, ist der neue Wert OUTPUT wieder in @ giiUnitPrice in sp_DiscountItem, welche man nur sp_GetInventoryItem.

8. Dieser neue Wert von @ giiUnitPrice weiter zurück in die OUTPUT @ diUnitPrice Parameter, die ursprünglich fütterte die NULL-Wert für @ giiUnitPrice, weil @ diUnitPrice hat die OUTPUT-Qualifikationsspiel in dem Aufruf von sp_GetInventoryItem. Now @ diUnitPrice enthält den gleichen Wert von sp_GetInventoryItem zurückgegeben.

9. Sie haben nun den nicht abgezinsten Einheitspreis Wert aus dem Inventar Posten gespeichert @ diUnitPrice, und Sie können diesen Wert Feed, um für eine mögliche Preissenkungen sp_GetAmountDue.

10. @ AmountDue wird mit dem gespeicherten Wert initialisiert @ diUnitPrice und ist nun bereit zu nennen sp_GetAmountDue.

11. sp_GetAmountDue ist jetzt mit @ AmountDue als OUTPUT-Parameter aufgerufen. Es enthält derzeit der Preis je Maßeinheit Wert aus dem Inventar Posten zurück.

12. sp_GetAmountDue kann oder auch nicht ändern Sie den Wert in @ AmountDue gespeichert, aber wenn dies der Fall, die geänderte Wert wird in @ AmountDue restauriert.

13. Da @ AmountDue ein OUTPUT-Parameter in sp_GetAmountDue, ist der neue Wert OUTPUT wieder in @ AmountDue in sp_DiscountItem, welche man nur sp_GetAmountDue.

14. Dieser neue Wert von @ AmountDue weiter zurück in die OUTPUT @ diUnitPrice Parameter, die ursprünglich gespeist den unveränderten Einheitspreis Wert @ AmountDue, weil @ diUnitPrice hat die OUTPUT-Qualifikationsspiel in dem Aufruf von sp_GetAmountDue. Now @ diUnitPrice enthält die (möglicherweise) um Einheit Preis von sp_GetAmountDue Wert zurückgegeben.

15. Da @ diUnitPrice ein OUTPUT-Parameter in sp_DiscountItem @ diUnitPrice können OUTPUT seiner letzten, eventuell modifiziert Wert auf den ColdFusion-Anwendung, die es in erster Linie gefordert.

Ein Artikel eingereicht von Michael Patterson


Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle.
Wichtig: Dieser Artikel "Wiederverwenden von der gespeicherten Prozedur-Code" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.


Online: 320 users browsing the articles directory