Ändern einer gespeicherten ProzedurModify a Stored Procedure

GILT FÜR: jaSQL Server jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

In diesem Thema wird beschrieben, wie eine gespeicherte Prozedur mit SQL Server 2017SQL Server 2017 oder SQL Server Management StudioSQL Server Management Studio in Transact-SQLTransact-SQLgeändert wird.This topic describes how to modify a stored procedure in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

VorbereitungenBefore You Begin

EinschränkungenLimitations and Restrictions

Transact-SQLTransact-SQL -gespeicherte Prozeduren können nicht in CLR-gespeicherte Prozeduren geändert werden und umgekehrt.stored procedures cannot be modified to be CLR stored procedures and vice versa.

Wenn die vorherige Prozedurdefinition mit WITH ENCRYPTION oder WITH RECOMPILE erstellt wurde, sind diese Optionen nur dann aktiviert, wenn sie in der ALTER PROCEDURE-Anweisung enthalten sind.If the previous procedure definition was created using WITH ENCRYPTION or WITH RECOMPILE, these options are enabled only if they are included in the ALTER PROCEDURE statement.

SicherheitSecurity

BerechtigungenPermissions

Erfordert ALTER PROCEDURE-Berechtigung für die Prozedur.Requires ALTER PROCEDURE permission on the procedure.

Vorgehensweise: Ändern einer gespeicherten ProzedurHow to Modify a Stored Procedure

Sie können eine der folgenden Anwendungen verwenden:You can use one of the following:

Verwenden von SQL Server Management StudioUsing SQL Server Management Studio

So ändern Sie eine Prozedur in Management StudioTo modify a procedure in Management Studio

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz von Datenbank-EngineDatabase Engine her, und erweitern Sie dann diese Instanz.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine and then expand that instance.

  2. Erweitern Sie Datenbanken, erweitern Sie die Datenbank, zu der die Prozedur gehört, und erweitern Sie dann Programmierbarkeit.Expand Databases, expand the database in which the procedure belongs, and then expand Programmability.

  3. Erweitern Sie Gespeicherte Prozeduren, klicken Sie mit der rechten Maustaste auf die zu ändernde Prozedur, und klicken Sie dann auf Ändern.Expand Stored Procedures, right-click the procedure to modify, and then click Modify.

  4. Ändern Sie den Text der gespeicherten Prozedur.Modify the text of the stored procedure.

  5. Zum Testen der Syntax klicken Sie im Menü Abfrage auf Analysieren.To test the syntax, on the Query menu, click Parse.

  6. Um die Änderungen an der Prozedurdefinition zu speichern, klicken Sie im Menü Abfrage auf Ausführen.To save the modifications to the procedure definition, on the Query menu, click Execute.

  7. Um die aktualisierte Prozedurdefinition als Transact-SQLTransact-SQL -Skript zu speichern, klicken Sie im Menü Datei auf Speichern unter.To save the updated procedure definition as a Transact-SQLTransact-SQL script, on the File menu, click Save As. Nehmen Sie den Dateinamen an oder ersetzen Sie ihn durch einen neuen Namen, und klicken Sie dann auf Speichern.Accept the file name or replace it with a new name, and then click Save.

Wir hören Ihnen zu: Wenn Sie in diesem Artikel – beispielsweise in einem Schritt oder Codebeispiel – veraltete oder falsche Informationen finden, lassen Sie es uns bitte wissen.We are listening: If you find something outdated or incorrect in this article, such as a step or a code example, please tell us. Sie können unten auf dieser Seite im Abschnitt Feedback auf die Schaltfläche Diese Seite klicken.You can click the This page button in the Feedback section at the bottom of this page. Wir lesen jedes Feedback zu SQL in der Regel am nächsten Tag.We read every item of feedback about SQL, typically the next day. Vielen Dank.Thanks.

Wichtig

Überprüfen Sie alle Benutzereingaben.Validate all user input. Verketten Sie keine Benutzereingaben, bevor Sie sie überprüft haben.Do not concatenate user input before you validate it. Führen Sie niemals Befehle aus, die sich aus nicht überprüften Benutzereingaben zusammensetzen.Never execute a command constructed from unvalidated user input.

Verwenden von Transact-SQLUsing Transact-SQL

So ändern Sie eine Prozedur im Abfrage-EditorTo modify a procedure in Query Editor

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer Instanz von Datenbank-EngineDatabase Engine her, und erweitern Sie dann diese Instanz.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine and then expand that instance.

  2. Erweitern Sie Datenbanken, und erweitern Sie die Datenbank, der die Prozedur angehört.Expand Databases, expand the database in which the procedure belongs. Oder wählen Sie die Datenbank über die Symbolleiste aus der Liste der verfügbaren Datenbanken aus.Or, from the tool bar, select the database from the list of available databases. Wählen Sie für dieses Beispiel die AdventureWorks2012AdventureWorks2012 -Datenbank aus.For this example, select the AdventureWorks2012AdventureWorks2012 database.

  3. Klicken Sie im Menü Datei auf Neue Abfrage.On the File menu, click New Query.

  4. Kopieren Sie das folgenden Beispiel, und fügen Sie es in den Abfrage-Editor ein.Copy and paste the following example into the query editor. Im ersten Beispiel wird die uspVendorAllInfo -Prozedur erstellt. Diese Prozedur gibt die Namen, die gelieferten Produkte, die Bonität und die Verfügbarkeit aller Hersteller in der Adventure Works CyclesAdventure Works Cycles -Datenbank, die das Unternehmen beliefern, zurück.The example creates the uspVendorAllInfo procedure, which returns the names of all the vendors in the Adventure Works CyclesAdventure Works Cycles database, the products they supply, their credit ratings, and their availability.

    
    IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL   
        DROP PROCEDURE Purchasing.uspVendorAllInfo;  
    GO  
    CREATE PROCEDURE Purchasing.uspVendorAllInfo  
    WITH EXECUTE AS CALLER  
    AS  
        SET NOCOUNT ON;  
        SELECT v.Name AS Vendor, p.Name AS 'Product name',   
          v.CreditRating AS 'Rating',   
          v.ActiveFlag AS Availability  
        FROM Purchasing.Vendor v   
        INNER JOIN Purchasing.ProductVendor pv  
          ON v.BusinessEntityID = pv.BusinessEntityID   
        INNER JOIN Production.Product p  
          ON pv.ProductID = p.ProductID   
        ORDER BY v.Name ASC;  
    GO  
    
    
  5. Klicken Sie im Menü Datei auf Neue Abfrage.On the File menu, click New Query.

  6. Kopieren Sie das folgenden Beispiel, und fügen Sie es in den Abfrage-Editor ein.Copy and paste the following example into the query editor. Im Beispiel wird die uspVendorAllInfo -Prozedur geändert.The example modifies the uspVendorAllInfo procedure. Die EXECUTE AS CALLER-Klausel wird entfernt, und der Textkörper der Prozedur wird so geändert, dass nur Hersteller zurückgegeben werden, die das angegebene Produkt liefern.The EXECUTE AS CALLER clause is removed and the body of the procedure is modified to return only those vendors that supply the specified product. Mit den Funktionen LEFT und CASE wird die Darstellung des Resultsets angepasst.The LEFT and CASE functions customize the appearance of the result set.

    ALTER PROCEDURE Purchasing.uspVendorAllInfo  
        @Product varchar(25)   
    AS  
        SET NOCOUNT ON;  
        SELECT LEFT(v.Name, 25) AS Vendor, LEFT(p.Name, 25) AS 'Product name',   
        'Rating' = CASE v.CreditRating   
            WHEN 1 THEN 'Superior'  
            WHEN 2 THEN 'Excellent'  
            WHEN 3 THEN 'Above average'  
            WHEN 4 THEN 'Average'  
            WHEN 5 THEN 'Below average'  
            ELSE 'No rating'  
            END  
        , Availability = CASE v.ActiveFlag  
            WHEN 1 THEN 'Yes'  
            ELSE 'No'  
            END  
        FROM Purchasing.Vendor AS v   
        INNER JOIN Purchasing.ProductVendor AS pv  
          ON v.BusinessEntityID = pv.BusinessEntityID   
        INNER JOIN Production.Product AS p   
          ON pv.ProductID = p.ProductID   
        WHERE p.Name LIKE @Product  
        ORDER BY v.Name ASC;  
    GO  
    
    
  7. Um die Änderungen an der Prozedurdefinition zu speichern, klicken Sie im Menü Abfrage auf Ausführen.To save the modifications to the procedure definition, on the Query menu, click Execute.

  8. Um die aktualisierte Prozedurdefinition als Transact-SQLTransact-SQL -Skript zu speichern, klicken Sie im Menü Datei auf Speichern unter.To save the updated procedure definition as a Transact-SQLTransact-SQL script, on the File menu, click Save As. Nehmen Sie den Dateinamen an oder ersetzen Sie ihn durch einen neuen Namen, und klicken Sie dann auf Speichern.Accept the file name or replace it with a new name, and then click Save.

  9. Um die geänderte gespeicherte Prozedur auszuführen, führen Sie das folgende Beispiel aus.To run the modified stored procedure, execute the following example.

    EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';  
    GO  
    
    

Weitere InformationenSee Also

ALTER PROCEDURE (Transact-SQL)ALTER PROCEDURE (Transact-SQL)