Erstellen einer gespeicherten Prozedur
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Der Artikel beschreibt, wie Sie eine gespeicherte Prozedur von SQL Server mithilfe von SQL Server Management Studio und der CREATE PROCEDURE-Anweisung von Transact-SQL erstellen.
Berechtigungen
Erfordert die CREATE PROCEDURE-Berechtigung in der Datenbank und die ALTER-Berechtigung auf dem Schema, in dem die Prozedur erstellt wird.
Erstellen einer gespeicherten Prozedur
Sie können die Benutzeroberfläche von SQL Server Management Studio (SSMS) oder Transact-SQL in einem SSMS-Abfragefenster verwenden, um eine gespeicherte Prozedur zu erstellen. Verwenden Sie immer die neueste Version von SSMS.
Hinweis
Die in diesem Artikel gespeicherte Beispielprozedur verwendet die Beispieldatenbank AdventureWorksLT2022
(SQL Server) oder AdventureWorksLT
(Azure SQL-Datenbank). Weitere Anweisungen zum Abrufen und Verwenden von AdventureWorksLT
-Beispieldatenbanken finden Sie unter AdventureWorks-Beispieldatenbanken.
Verwenden von SQL Server Management Studio
So erstellen Sie eine gespeicherte Prozedur in SSMS:
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz von SQL Server oder Azure SQL-Datenbank her.
Weitere Informationen finden Sie in den folgenden Schnellstarts:
Erweitern Sie die Instanz und erweitern Sie dann die Datenbanken.
Erweitern Sie die gewünschte Datenbank und erweitern Sie dann die Programmierbarkeit.
Klicken Sie mit der rechten Maustaste auf Gespeicherte Prozeduren, und wählen Sie dann Neue>gespeicherte Prozedur. Ein neues Abfragefenster wird mit einer Vorlage für die gespeicherte Prozedur geöffnet.
Die Standardvorlage für gespeicherte Prozeduren weist zwei Parameter auf. Wenn ihre gespeicherte Prozedur weniger, mehr oder keine Parameter aufweist, fügen Sie Parameterzeilen in der Vorlage entsprechend hinzu oder entfernen Sie sie.
Wählen Sie im Menü Abfrage die Option Werte für Vorlagenparameter angebenaus.
Geben Sie im Dialogfeld Werte für Vorlagenparameter angeben die folgenden Informationen für die Wert-Felder an:
- Autor: Ersetzen Sie
Name
durch Ihren Namen. - Datum erstellen: Geben Sie das heutige Datum ein.
- Beschreibung: Beschreiben Sie kurz, wozu das Verfahren dient.
- Procedure_Name: Ersetzen Sie
ProcedureName
mit dem Namen der neuen gespeicherten Prozedur. - @Param1: Ersetzen Sie
@p1
mit dem Namen des ersten Parameters, z. B. @ColumnName1. - @Datatype_For_Param1: Ersetzen Sie
int
gegebenenfalls mit dem Datentyp Ihres ersten Parameters, z. B. nvarchar(50). - Default_Value_For_Param1: Ersetzen Sie
0
gegebenenfalls mit dem Standardwert des ersten Parameters oder NULL. - @Param2: Ersetzen Sie
@p2
mit dem Namen des zweiten Parameters, z. B. @ColumnName2. - @Datatype_For_Param2: Ersetzen Sie
int
ggf. durch den Datentyp des zweiten Parameters, z. B. nvarchar(50). - Default_Value_For_Param2: Ersetzen Sie
0
ggf. mit dem Standardwert des zweiten Parameters oder NULL.
Der folgende Screenshot zeigt das fertige Dialogfeld für die gespeicherte Beispielprozedur:
- Autor: Ersetzen Sie
Wählen Sie OK aus.
Ersetzen Sie im Abfrage-Editor die SELECT-Anweisung durch die Abfrage für Ihre Prozedur.
Der folgende Code zeigt die abgeschlossene CREATE PROCEDURE-Anweisung für die gespeicherte Beispielprozedur:
-- ======================================================= -- Create Stored Procedure Template for Azure SQL Database -- ======================================================= SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: My Name -- Create Date: 01/23/2024 -- Description: Returns the customer's company name. -- ============================================= CREATE PROCEDURE SalesLT.uspGetCustomerCompany ( -- Add the parameters for the stored procedure here @LastName nvarchar(50) = NULL, @FirstName nvarchar(50) = NULL ) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON -- Insert statements for procedure here SELECT FirstName, LastName, CompanyName FROM SalesLT.Customer WHERE FirstName = @FirstName AND LastName = @LastName; END GO
Wählen Sie zum Testen der Syntax die Option Analysieren im Menü Abfrage aus. Beheben Sie alle Fehler.
Wählen Sie Ausführen in der Symbolleiste aus. Die Prozedur wird als Objekt in der Datenbank erstellt.
Damit die neue Prozedur im Objekt-Explorer angezeigt wird, klicken Sie mit der rechten Maustaste auf Gespeicherte Prozeduren und wählen Aktualisieren aus.
So führen Sie die Prozedur aus:
Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf den Namen der Gespeicherten Prozedur und wählen Sie Gespeicherte Prozedur ausführen aus.
Geben Sie im Fenster Prozedur ausführen Werte für alle Parameter ein, und wählen Sie dann OK aus. Ausführliche Anweisungen finden Sie unter Ausführen einer gespeicherten Prozedur.
Um beispielsweise die Beispielprozedur
SalesLT.uspGetCustomerCompany
auszuführen, geben Sie Cannon als Parameter @LastName und Chris als Parameter @FirstName ein. Wählen Sie dann OK aus. Das gespeicherte Verfahren läuft und gibtFirstName
Chris,LastName
Cannon undCompanyName
Outdoor Sporting Goods zurück.
Wichtig
Überprüfen Sie alle Benutzereingaben. Verketten Sie keine Benutzereingaben, bevor Sie sie überprüft haben. Führen Sie niemals Befehle aus, die sich aus nicht überprüften Benutzereingaben zusammensetzen.
Verwenden von Transact-SQL
So erstellen Sie eine Prozedur im SSMS Abfrage-Editor:
Stellen Sie in SSMS eine Verbindung mit einer Instanz von SQL Server oder Azure SQL Database her.
Wählen Sie Neue Abfrage in der Symbolleiste aus.
Geben Sie den folgenden Code in das Abfragefenster ein, ersetzen Sie
<ProcedureName>
, die Namen und Datentypen aller Parameter sowie die SELECT-Anweisung durch Ihre eigenen Werte.CREATE PROCEDURE <ProcedureName> @<ParameterName1> <data type>, @<ParameterName2> <data type> AS SET NOCOUNT ON; SELECT <your SELECT statement>; GO
Die folgende Anweisung erstellt beispielsweise dieselbe gespeicherte Prozedur in der
AdventureWorksLT
-Datenbank wie im vorherigen Beispiel mit einem etwas anderen Prozedurnamen.CREATE PROCEDURE SalesLT.uspGetCustomerCompany1 @LastName nvarchar(50), @FirstName nvarchar(50) AS SET NOCOUNT ON; SELECT FirstName, LastName, CompanyName FROM SalesLT.Customer WHERE FirstName = @FirstName AND LastName = @LastName; GO
Wählen Sie Ausführen in der Symbolleiste aus, um die Abfrage auszuführen. Die gespeicherte Prozedur wurde erstellt.
Um die gespeicherte Prozedur auszuführen, geben Sie eine EXECUTE-Anweisung in ein neues Abfragefenster ein, geben Sie Werte für alle Parameter ein und wählen Sie dann Ausführen aus. Ausführliche Anweisungen finden Sie unter Ausführen einer gespeicherten Prozedur.