Viele gespeicherte Prozeduren sind anwendungsunabhängig, aber es kann auch einige geben, die anwendungsabhängig sind. Zum Beispiel können die CRUD (Create, Select, Update, Delete) Stored Procedures anwendungsübergreifend sein. Insbesondere können Sie eine Prüflogik einbauen (manchmal in Triggern, aber es gibt eine Grenze, wie kompliziert man in Triggern werden kann). Wenn Sie eine Art Standardarchitektur in Ihrem Softwarehaus haben, kann die mittlere Ebene eine gespeicherte Prozedur zum Erstellen/Auswählen/Aktualisieren/Löschen aus der Datenbank benötigen, unabhängig von der Anwendung, in der die Prozedur gemeinsam genutzt wird.
Gleichzeitig kann es einige nützliche Möglichkeiten geben, die Daten einzusehen, z. B. GetProductsSoldBySalesPerson usw., die ebenfalls anwendungsunabhängig sein werden. Möglicherweise haben Sie eine Reihe von Nachschlagetabellen für einige Felder wie Abteilung, Adresse usw., so dass es eine Prozedur geben kann, die eine Ansicht der Tabelle mit allen Textfeldern zurückgibt. D.h. anstelle von SalesPersonID, SaleDate, CustomerID, DepartmentID, CustomerAddressID gibt die Prozedur eine Ansicht SalesPersonName, SaleDate, CustomerName, DepartmentName, CustomerAddress zurück. Dies könnte auch anwendungsübergreifend verwendet werden. Ein Kundenbeziehungssystem würde Kundenname/Adresse/Sonstige Attribute ebenso benötigen wie ein Fakturierungssystem. Etwas, das alle Verknüpfungen durchführt und alle Kundeninformationen in einer Abfrage abruft, würde also wahrscheinlich anwendungsübergreifend verwendet werden. Zugegebenermaßen ist das Erstellen von Möglichkeiten zum Anzeigen der Daten die Domäne eines Views, aber oft wurden dafür gespeicherte Prozeduren verwendet.
Also im Grunde, beim Löschen aus Ihrer Tabelle müssen Sie aus 3 oder 4 anderen Tabellen löschen, um die Datenintegrität zu gewährleisten. ist die Logik zu kompliziert für einen Trigger? Dann könnte eine gespeicherte Prozedur wichtig sein, die von allen Anwendungen für Löschungen verwendet wird. Das Gleiche gilt für Dinge, die bei der Erstellung durchgeführt werden müssen. Wenn es gemeinsame Joins gibt, die immer durchgeführt werden, kann es sinnvoll sein, eine Stored Procedure zu haben, die alle Joins durchführt. Wenn Sie dann später die Tabellen ändern, können Sie die Prozedur beibehalten und nur die Logik dort ändern.