Eine gespeicherte Prozedur in SQL ist eine Gruppe von SQL-Abfragen, die gespeichert und mehrfach wiederverwendet werden können. Dies ist sehr nützlich, da es die Notwendigkeit reduziert, SQL-Abfragen neu zu schreiben. Es verbessert die Effizienz, Wiederverwendbarkeit und Sicherheit bei der Datenbankverwaltung.
Benutzer können auch Parameter an gespeicherte Prozeduren übergeben, sodass die gespeicherte Prozedur auf die übergebenen Parameterwerte reagieren kann.
Gespeicherte Prozeduren werden erstellt, um eine oder mehrere auszuführen DML Operationen auf der Datenbank. Es ist nichts anderes als eine Gruppe von SQL-Anweisungen das einige Eingaben in Form von Parametern akzeptiert, eine Aufgabe ausführt und möglicherweise einen Wert zurückgibt oder auch nicht.
Syntax
Zwei wichtige Syntaxen für die Verwendung gespeicherter Prozeduren in SQL sind:
Syntax zum Erstellen einer gespeicherten Prozedur
CREATE PROCEDURE prozedurname
(Parameter1 Datentyp, Parameter2 Datentyp, …)
ALS
BEGINNEN
— Auszuführende SQL-Anweisungen
ENDE
Syntax zum Ausführen der gespeicherten Prozedur
EXEC-Prozedurname Parameter1_Wert, Parameter2_Wert, ..
Parameter
Der wichtigste Teil sind die Parameter. Parameter werden verwendet, um Werte an die Prozedur zu übergeben. Es gibt verschiedene Arten von Parametern, die wie folgt lauten:
- BEGINNEN: Dies ist das, was direkt ausgeführt wird, oder wir können sagen, dass es sich um einen ausführbaren Teil handelt.
- ENDE: Bis dahin wird der Code ausgeführt.
Beispiel für eine gespeicherte SQL-Prozedur
Schauen wir uns ein Beispiel einer gespeicherten Prozedur in SQL an, um es besser zu verstehen.
Stellen Sie sich eine Datenbank namens SampleDB, eine Tabelle namens Customers mit einigen Beispieldaten und eine gespeicherte Prozedur namens GetCustomersByCountry vor.
Die gespeicherte Prozedur verwendet den Parameter „Land“ und gibt eine Liste von Kunden aus der Tabelle „Kunden“ zurück, die dem angegebenen Land entsprechen. Abschließend wird die gespeicherte Prozedur mit dem Parameter Sri Lanka ausgeführt, um die Liste der Kunden aus Sri Lanka abzurufen.
Abfrage:
-- Create a new database named 'SampleDB' CREATE DATABASE SampleDB; -- Switch to the new database USE SampleDB; -- Create a new table named 'Customers' CREATE TABLE Customers ( CustomerID INT PRIMARY KEY, CustomerName VARCHAR(50), ContactName VARCHAR(50), Country VARCHAR(50) ); -- Insert some sample data into the Customers table INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country) VALUES (1, 'Shubham', 'Thakur', 'India'), (2, 'Aman ', 'Chopra', 'Australia'), (3, 'Naveen', 'Tulasi', 'Sri lanka'), (4, 'Aditya', 'Arpan', 'Austria'), (5, 'Nishant. Salchichas S.A.', 'Jain', 'Spain'); -- Create a stored procedure named 'GetCustomersByCountry' CREATE PROCEDURE GetCustomersByCountry @Country VARCHAR(50) AS BEGIN SELECT CustomerName, ContactName FROM Customers WHERE Country = @Country; END; -- Execute the stored procedure with parameter 'Sri lanka' EXEC GetCustomersByCountry @Country = 'Sri lanka';>
Notiz: Sie müssen sicherstellen, dass das Benutzerkonto über die erforderlichen Berechtigungen zum Erstellen einer Datenbank verfügt. Sie können versuchen, sich als ein anderer Benutzer mit Administratorrechten anzumelden, oder sich an den Datenbankadministrator wenden, um Ihrem Benutzerkonto die erforderlichen Berechtigungen zu erteilen. Wenn Sie einen cloudbasierten Datenbankdienst verwenden, stellen Sie sicher, dass Sie das Benutzerkonto und seine Berechtigungen korrekt konfiguriert haben.
Ausgabe:
| Kundenname | Kontaktname |
|---|---|
| Naveen | Tulasi |
Wichtige Punkte zu gespeicherten SQL-Prozeduren
- Eine gespeicherte Prozedur ist ein vorbereiteter SQL-Code, den Sie speichern können, sodass der Code immer wieder verwendet werden kann.
- Gespeicherte Prozeduren ermöglichen es, Code, der wiederholt verwendet wird, in der Datenbank zu speichern und von dort aus auszuführen, anstatt vom Client aus. Dies bietet einen modulareren Ansatz für das Datenbankdesign.
- Da gespeicherte Prozeduren in der Datenbank kompiliert und gespeichert werden, sind sie äußerst effizient. SQL Server kompiliert jede gespeicherte Prozedur einmal und verwendet dann den Ausführungsplan erneut. Dies führt zu enormen Leistungssteigerungen, wenn gespeicherte Prozeduren wiederholt aufgerufen werden.
- Gespeicherte Prozeduren bieten eine bessere Sicherheit Ihrer Daten. Benutzer können eine gespeicherte Prozedur ausführen, ohne eine der Anweisungen direkt ausführen zu müssen. Daher kann einem Benutzer die Berechtigung zum Ausführen einer gespeicherten Prozedur erteilt werden, ohne dass er über Berechtigungen für die zugrunde liegenden Tabellen verfügt.
- Gespeicherte Prozeduren können den Netzwerkverkehr und die Latenz reduzieren und so die Anwendungsleistung steigern. Ein einzelner Aufruf einer gespeicherten Prozedur kann viele Anweisungen ausführen.
- Gespeicherte Prozeduren unterstützen die Fehlerbehandlung besser.
- Gespeicherte Prozeduren können verwendet werden, um erweiterte Datenbankfunktionen bereitzustellen, z. B. das Ändern von Daten in Tabellen und das Kapseln dieser Änderungen in Datenbanktransaktionen.