Gespeicherte Prozeduren sind ausführbare Datenbank-Objekte von mehreren SQL-Anweisungen aus . Sie helfen bei der Vereinfachung der Interaktion zwischen der Datenbank und dem End- Benutzer, der nicht über genügend Know-how , um komplexe SQL-Abfragen zu schreiben. Sie können gespeicherte Prozeduren für den Zugriff , Datenvalidierung und Vereinfachung komplexer Verarbeitung, die mehrere SQL-Anweisungen erfordert verwenden . Gespeicherte Prozeduren können akzeptieren Eingabeparameter , Rückgabewerte und umzusetzen Looping Logiken wie if, while und case-Anweisungen . Things You
Microsoft SQL Server Query Analyzer
brauchen anzeigen Weitere Anweisungen
1
Erstellen Sie eine gespeicherte Prozedur mit der CREATE PROCEDURE procedurename Syntax . Geben Sie die folgenden Aussagen auf eine gespeicherte Prozedur namens sporderscopy , die den Inhalt der Tabelle Bestellungen in OrdersCopy Tabelle kopiert erstellen.
CREATE PROCEDURE sporderscopy
AS
SELECT * in OrdersCopy
FROM Bestellungen
das obige Verfahren wird eine Kopie der Tabelle orders . Sie können auch Parameter , kompilieren und fügen Verschlüsselung mit dem create procedure -Anweisung. Die Parameter helfen Ihnen, Werte in der Prozedur, die für das gewünschte Ergebnis erforderlich sind, zu akzeptieren. Die Ausgabe -Parameter werden verwendet, um Werte , die zurück zu einem anderen Programm übergeben speichern. Optionale Parameter müssen einen Standardwert und müssen nicht einen Input-Wert . Die recompile Option macht das System kompilieren Sie die Prozedur jedes Mal ausgeführt wird. Die Verschlüsselung Option ermöglicht dem Endbenutzer , um das Endergebnis zu erhalten , ohne sich den Code.
2
Gespeicherte Prozeduren können Eingabewerte akzeptieren und passieren wieder Ausgangswerte an das Programm ruft die gespeicherten Prozeduren , indem er erklärt die Parameter . Die Input-Parameter kann optional, wenn Sie einen Standardwert zuzuweisen , um sie beim Erstellen der Prozedur . Die Ausgangs- Parameter werden durch das Schlüsselwort OUTPUT definiert.
CREATE PROCEDURE sporderscount
@ total_order Geld OUTPUT ,
@ order_date Smalldatetime = NULL ,
@ customer_var varchar ( 40) = '%'
AS
SELECT @ total_order = SUMME ( total_order )
FROM Bestellungen Kunden JOIN
ON orders.orderID = customers.orderID
WHERE ( order_date > = @ date_var )
AND ( CustomerName wie @ customer_var )
Das obige Verfahren hat zwei Eingabeparameter und gibt einen Ausgabeparameter . Die Ausgabe -Parameter wird durch den Ausgang Schlüsselwort identifiziert.
3
Ausführen oder eine Prozedur mit dem EXEC procedurename Syntax . Geben Sie die folgenden SQL-Anweisungen , die gespeicherte Prozedur ausführen :
DECLARE @ mytotalorder Geld
EXEC spordercount @ mytotalorder = @ total_order Ausgang , '2010 -03- 21 ', ' D % '
erklären Anweisung erstellt eine Ausgangsgröße , die den Wert der Ausgabe -Parameter in der gespeicherten Prozedur speichert . Die execute-Anweisung wird verwendet, um die gespeicherte Prozedur ausführen . Da sowohl die Input-Parameter Standardwerte haben, müssen sie nicht ein Wert zugewiesen werden, während der Ausführung der Prozedur
4
Rückgabewerte aus gespeicherten Prozeduren , indem Sie die folgende Anweisung : .
RETURN @ order_count
die obige Anweisung in einer gespeicherten Prozedur einen Wert zurückgeben und speichern sie in einer variablen im Programm Aufruf der Prozedur . Sie können entweder einen Return-Parameter oder die Ausgabe -Parameter übergeben einen Wert zurück an das aufrufende Programm . In der obigen Aussage , wird das Verfahren geben die Anzahl der Zeilen in der Tabelle orders .
5
Verwenden Sie die ALTER PROCEDURE procedurename Befehl, um die gespeicherte Prozedur zu ändern. Die Syntax ist ähnlich der create procedure . Geben Sie die folgenden Anweisungen, um die Prozedur zu ändern, um eine andere spordercount variable Zustand hinzuzufügen. Die gespeicherte Prozedur wird schränken die Reihen auf dem Wohnsitzstaat anstatt des Namens basiert.
ALTER PROCEDURE sporderscount
@ order_state varchar (30 ) = NULL ,
@ total_order Geld OUTPUT ,
@ order_date smalldatetime = NULL
AS
SELECT @ total_order = sum ( total_order )
FROM Bestellungen JOIN Kunden
< p > ON orders.orderID = customers.orderID
WHERE ( order_date > = @ date_var )
AND ( CustomerState = @ order_state )
6
löschen der gespeicherten Prozedur mit der DROP PROCEDURE procedurename Befehl . Sie können nicht rückgängig gemacht werden die Wirkung der Drop-Befehl . Löschen Sie die gespeicherte Prozedur spordercount durch Eingabe der folgenden Aussage :
DROP PROCEDURE sporderscount