Erstellen von Sichten und gespeicherten Prozeduren
Nachdem Mary nun auf die TestData-Datenbank zugreifen kann, möchten Sie möglicherweise einige Datenbankobjekte erstellen, wie z. B. eine Sicht und eine gespeicherte Prozedur, und Mary dann Zugriff auf diese Objekte erteilen. Bei einer Sicht handelt es sich um eine gespeicherte SELECT-Anweisung, und eine gespeicherte Prozedur setzt sich aus einer oder mehreren Transact-SQL-Anweisungen zusammen, die als Batch ausgeführt werden.
Sichten werden wie Tabellen abgefragt und nehmen keine Parameter an. Gespeicherte Prozeduren sind komplexer als Sichten. Gespeicherte Prozeduren können sowohl Eingabe- als auch Ausgabeparameter aufweisen und Anweisungen enthalten, die den Ablauf des Codes steuern, wie z. B. IF- und WHILE-Anweisungen. Als eine der Grundregeln guter Programmierung gilt die Verwendung gespeicherter Prozeduren für alle Aktionen, die sich in der Datenbank wiederholen.
In diesem Beispiel erstellen Sie mithilfe von CREATE VIEW eine Sicht, die nur zwei der Spalten in der Products-Tabelle auswählt. Sie erstellen dann mithilfe von CREATE PROCEDURE eine gespeicherte Prozedur, die einen Parameter für den Preis akzeptiert und nur die Produkte zurückgibt, deren Preis unter dem angegebenen Parameterwert liegt.
So erstellen Sie eine Sicht
Führen Sie die folgende Anweisung aus, um eine sehr einfache Sicht zu erstellen, die eine SELECT-Anweisung ausführt und die Namen und Preise der Produkte an den Benutzer zurückgibt.
CREATE VIEW vw_Names AS SELECT ProductName, Price FROM Products; GO
Testen der Sicht
Sichten werden genau wie Tabellen behandelt. Greifen Sie mithilfe einer SELECT-Anweisung auf eine Sicht zu.
SELECT * FROM vw_Names; GO
So erstellen Sie eine gespeicherte Prozedur
Die folgende Anweisung erstellt eine gespeicherte Prozedur namens pr_Names, die einen Eingabeparameter mit der Bezeichnung @VarPrice vom Datentyp money akzeptiert. Die gespeicherte Prozedur druckt die mit dem Eingabeparameter verkettete Products less than-Anweisung. Dieser Parameter wird vom money-Datentyp in den varchar(10)-Zeichendatentyp geändert. Dann führt die Prozedur eine SELECT-Anweisung für die Sicht aus und übergibt dabei den Eingabeparameter als Teil der WHERE-Klausel. Dadurch werden alle Produkte zurückgegeben, deren Preis unter dem Wert des Eingabeparameters liegt.
CREATE PROCEDURE pr_Names @VarPrice money AS BEGIN -- The print statement returns text to the user PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10)); -- A second statement starts here SELECT ProductName, Price FROM vw_Names WHERE Price < @varPrice; END GO
Testen der gespeicherten Prozedur.
Wenn Sie die gespeicherte Prozedur testen möchten, geben Sie die folgende Anweisung ein, und führen Sie sie aus. Die Prozedur sollte die Namen der beiden Produkte zurückgeben, die Sie in Lektion 1 mit einem Preis unter 10.00 in die Products-Tabelle eingegeben haben.
EXECUTE pr_Names 10.00; GO
Siehe auch