Modificare una stored procedureModify a Stored Procedure

In questo argomento si applica a: SìSQL ServerSìDatabase SQL di AzureSìAzure SQL Data Warehouse Sì Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

In questo argomento viene descritto come modificare una stored procedure in SQL Server 2017SQL Server 2017 utilizzando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.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.

Prima di iniziareBefore You Begin

Limitazioni e restrizioniLimitations and Restrictions

Transact-SQLTransact-SQL in stored procedure CLR e viceversa. stored procedures cannot be modified to be CLR stored procedures and vice versa.

Se la definizione di stored procedure precedente è stata creata tramite l'opzione WITH ENCRYPTION o WITH RECOMPILE, tali opzioni sono abilitate solo se incluse nell'istruzione ALTER PROCEDURE.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.

SicurezzaSecurity

AutorizzazioniPermissions

È richiesta l'autorizzazione ALTER PROCEDURE per la stored procedure.Requires ALTER PROCEDURE permission on the procedure.

Modalità di modifica di una stored procedureHow to Modify a Stored Procedure

È possibile usare uno dei seguenti elementi:You can use one of the following:

Utilizzo di SQL Server Management StudioUsing SQL Server Management Studio

Per modificare una stored procedure in Management StudioTo modify a procedure in Management Studio

  1. In Esplora oggetti connettersi a un'istanza del Motore di databaseDatabase Engine , quindi espanderla.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine and then expand that instance.

  2. Espandere Database, espandere il database a cui appartiene la stored procedure, quindi espandere Programmabilità.Expand Databases, expand the database in which the procedure belongs, and then expand Programmability.

  3. Espandere Stored procedure, fare clic con il pulsante destro del mouse sulla stored procedure da modificare, quindi scegliere Modifica.Expand Stored Procedures, right-click the procedure to modify, and then click Modify.

  4. Modificare il testo della stored procedure.Modify the text of the stored procedure.

  5. Per controllare la sintassi, scegliere Analizza dal menu Query.To test the syntax, on the Query menu, click Parse.

  6. Per salvare le modifiche alla definizione della stored procedure, scegliere Esegui dal menu Query.To save the modifications to the procedure definition, on the Query menu, click Execute.

  7. Per salvare la definizione della stored procedure aggiornata come script Transact-SQLTransact-SQL , scegliere Salva con nome dal menu File.To save the updated procedure definition as a Transact-SQLTransact-SQL script, on the File menu, click Save As. Accettare il nome del file o sostituirlo con uno nuovo, quindi fare clic su Salva.Accept the file name or replace it with a new name, and then click Save.

Importante

Convalidare sempre input di tutti gli utenti.Validate all user input. Non concatenare l'input dell'utente prima di averlo convalidato.Do not concatenate user input before you validate it. Non eseguire mai un comando creato dall'input dell'utente non convalidato.Never execute a command constructed from unvalidated user input.

Utilizzo di Transact-SQLUsing Transact-SQL

Per modificare una stored procedure nell'editor di queryTo modify a procedure in Query Editor

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine , quindi espanderla.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine and then expand that instance.

  2. Espandere Databaseed espandere il database a cui appartiene la stored procedure.Expand Databases, expand the database in which the procedure belongs. In alternativa, selezionare il database nell'elenco dei database disponibili sulla barra degli strumenti.Or, from the tool bar, select the database from the list of available databases. Per questo esempio, selezionare il database AdventureWorks2012AdventureWorks2012 .For this example, select the AdventureWorks2012AdventureWorks2012 database.

  3. Scegliere Nuova query dal menu File.On the File menu, click New Query.

  4. Copiare e incollare l'esempio seguente nell'editor di query.Copy and paste the following example into the query editor. Nell'esempio viene creata la stored procedure uspVendorAllInfo mediante la quale vengono restituiti i nomi di tutti i fornitori nel database Adventure Works CyclesAdventure Works Cycles , i prodotti da essi forniti, nonché le informazioni relative alla posizione creditizia e alla disponibilità.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. Scegliere Nuova query dal menu File.On the File menu, click New Query.

  6. Copiare e incollare l'esempio seguente nell'editor di query.Copy and paste the following example into the query editor. Nell'esempio viene modificata la stored procedure uspVendorAllInfo .The example modifies the uspVendorAllInfo procedure. La clausola EXECUTE AS CALLER viene rimossa e il corpo della stored procedure viene modificato in modo da restituire solo i fornitori del prodotto specificato.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. Le funzioni LEFT e CASE personalizzano l'aspetto del set di risultati.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. Per salvare le modifiche alla definizione della stored procedure, scegliere Esegui dal menu Query.To save the modifications to the procedure definition, on the Query menu, click Execute.

  8. Per salvare la definizione della stored procedure aggiornata come script Transact-SQLTransact-SQL , scegliere Salva con nome dal menu File.To save the updated procedure definition as a Transact-SQLTransact-SQL script, on the File menu, click Save As. Accettare il nome del file o sostituirlo con uno nuovo, quindi fare clic su Salva.Accept the file name or replace it with a new name, and then click Save.

  9. Per eseguire la stored procedure modificata, eseguire l'esempio riportato di seguito.To run the modified stored procedure, execute the following example.

    EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';  
    GO  
    

Vedere ancheSee Also

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