Modificar um procedimento armazenado

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Este artigo descreve como modificar um procedimento armazenado no SQL Server usando o SQL Server Management Studio ou o Transact-SQL.

Limitações e restrições

Os procedimentos armazenados Transact-SQL não podem ser modificados para serem procedimentos armazenados CLR e vice-versa.

Se a definição de procedimento anterior foi criada com WITH ENCRYPTION ou WITH RECOMPILE, essas opções estarão habilitadas somente se tiverem sido incluídas na instrução ALTER PROCEDURE.

Permissões

Requer a permissão ALTER PROCEDURE no procedimento.

Usar o SQL Server Management Studio

Para modificar um procedimento no SQL Server Management Studio:

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e expanda-a.

  2. Expanda Bancos de Dados, expanda o banco de dados ao qual pertence o procedimento e expanda Programação.

  3. Expanda Procedimentos Armazenados, clique com o botão direito do mouse no procedimento que deseja modificar e selecione Modificar.

  4. Modifique o texto do procedimento armazenado.

  5. Para testar a sintaxe, no menu Consulta, selecione Analisar.

  6. Para salvar as modificações na definição do procedimento, no menu Consulta, selecione Executar.

  7. Para salvar a definição do procedimento atualizada como um script Transact-SQL, no menu Arquivo, selecione Salvar como. Aceite o nome de arquivo ou substitua-o por um novo nome e selecione Salvar.

Importante

Valide todas as entradas de usuário. Não concatene a entrada de usuário antes de validá-la. Nunca execute um comando construído por uma entrada de usuário inválida. Para obter mais informações, confira Injeção de SQL

Usar o Transact-SQL

Para modificar um procedimento usando comandos T-SQL:

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e expanda-a.

  2. Expanda Bancos de Dadose o banco de dados ao qual o procedimento pertence. Ou, na barra de ferramentas, selecione o banco de dados na lista de bancos de dados disponíveis. Neste exemplo, selecione o banco de dados AdventureWorks2022 .

  3. No menu Arquivo, selecione Nova Consulta.

  4. Copie e cole o exemplo a seguir no editor de consultas. O exemplo cria o procedimento uspVendorAllInfo , que retorna os nomes de todos os fornecedores no banco de dados Ciclos da Adventure Works , os produtos que eles fornecem, suas classificações de crédito e sua disponibilidade.

    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   
    

    Importante

    Remover e recriar um procedimento armazenado existente remove permissões que foram concedidas explicitamente ao procedimento armazenado. Em vez disso, use ALTER.

  5. No menu Arquivo, selecione Nova Consulta.

  6. Copie e cole o exemplo a seguir no editor de consultas. O exemplo modifica o procedimento uspVendorAllInfo . A cláusula EXECUTE AS CALLER é removida e o corpo do procedimento é modificado para retornar apenas os fornecedores que fornecem o produto especificado. As funções LEFT e CASE personalizam a aparência do conjunto de resultados.

    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. Para salvar as modificações na definição do procedimento, no menu Consulta, selecione Executar.

  8. Para salvar a definição do procedimento atualizada como um script Transact-SQL, no menu Arquivo, selecione Salvar como. Aceite o nome de arquivo ou substitua-o por um novo nome e selecione Salvar.

  9. Para executar o procedimento armazenado modificado, execute o exemplo a seguir.

    EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';  
    GO  
    

Próximas etapas