Condividi tramite


Modificare una stored procedure

Questo argomento descrive come modificare una stored procedure in SQL Server 2014 usando SQL Server Management Studio o Transact-SQL.

Prima di iniziare

Limitazioni e restrizioni

Le stored procedure Transact-SQL non possono essere modificate dalle stored procedure CLR e viceversa.

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.

Sicurezza

Autorizzazioni

È richiesta l'autorizzazione ALTER PROCEDURE per la stored procedure.

Modalità di modifica di una stored procedure

È possibile usare uno dei seguenti elementi:

Utilizzo di SQL Server Management Studio

Per modificare una stored procedure in Management Studio

  1. In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.

  2. Espandere Database, espandere il database a cui appartiene la stored procedure, quindi espandere Programmabilità.

  3. Espandere Stored procedure, fare clic con il pulsante destro del mouse sulla stored procedure da modificare, quindi scegliere Modifica.

  4. Modificare il testo della stored procedure.

  5. Per controllare la sintassi, scegliere Analizza dal menu Query.

  6. Per salvare le modifiche alla definizione della stored procedure, scegliere Esegui dal menu Query.

  7. Per salvare la definizione aggiornata della procedura come script Transact-SQL, scegliere Salva con nome dal menu File. Accettare il nome del file o sostituirlo con uno nuovo, quindi fare clic su Salva.

Importante

Convalidare sempre input di tutti gli utenti. Non concatenare l'input dell'utente prima di averlo convalidato. Non eseguire mai un comando creato dall'input dell'utente non convalidato.

Utilizzo di Transact-SQL

Per modificare una stored procedure nell'editor di query

  1. In Esplora oggetti connettersi a un'istanza del motore di database ed espanderla.

  2. Espandere Databaseed espandere il database a cui appartiene la stored procedure. In alternativa, selezionare il database nell'elenco dei database disponibili sulla barra degli strumenti. Per questo esempio selezionare il database AdventureWorks2012.

  3. Dal menu File scegliere Nuova query.

  4. Copiare e incollare l'esempio seguente nell'editor di query. Nell'esempio viene creata la stored procedure uspVendorAllInfo mediante la quale vengono restituiti i nomi di tutti i fornitori nel database Adventure Works Cycles, i prodotti da essi forniti, nonché le informazioni relative alla posizione creditizia e alla disponibilità.

    
    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. Dal menu File scegliere Nuova query.

  6. Copiare e incollare l'esempio seguente nell'editor di query. Nell'esempio viene modificata la stored procedure uspVendorAllInfo . 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. Le funzioni LEFT e CASE personalizzano l'aspetto del set di risultati.

    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.

  8. Per salvare la definizione aggiornata della procedura come script Transact-SQL, scegliere Salva con nome dal menu File. Accettare il nome del file o sostituirlo con uno nuovo, quindi fare clic su Salva.

  9. Per eseguire la stored procedure modificata, eseguire l'esempio riportato di seguito.

    EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';  
    GO  
    
    

Vedi anche

ALTER PROCEDURE (Transact-SQL)