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:

  1. 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:

  2. Erweitern Sie die Instanz und erweitern Sie dann die Datenbanken.

  3. Erweitern Sie die gewünschte Datenbank und erweitern Sie dann die Programmierbarkeit.

  4. 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.

  5. Wählen Sie im Menü Abfrage die Option Werte für Vorlagenparameter angebenaus.

  6. 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:

    Screenshot eines ausgefüllten Dialogfelds zum Angeben von Werten für Vorlagenparameter.

  7. Wählen Sie OK aus.

  8. 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
    
  9. Wählen Sie zum Testen der Syntax die Option Analysieren im Menü Abfrage aus. Beheben Sie alle Fehler.

  10. Wählen Sie Ausführen in der Symbolleiste aus. Die Prozedur wird als Objekt in der Datenbank erstellt.

  11. 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:

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf den Namen der Gespeicherten Prozedur und wählen Sie Gespeicherte Prozedur ausführen aus.

  2. 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 gibt FirstName Chris, LastName Cannon und CompanyName 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:

  1. Stellen Sie in SSMS eine Verbindung mit einer Instanz von SQL Server oder Azure SQL Database her.

  2. Wählen Sie Neue Abfrage in der Symbolleiste aus.

  3. 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
    
  4. Wählen Sie Ausführen in der Symbolleiste aus, um die Abfrage auszuführen. Die gespeicherte Prozedur wurde erstellt.

  5. 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.