Partilhar via


Modificar um procedimento armazenado

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

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

Limitaçõ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. A entrada de usuário não validada torna seu banco de dados vulnerável a um tipo de exploração chamada ataque de injeção de SQL. Para obter mais informações, consulte SQL Injection.

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 Purchasing.uspVendorAllInfo, que retorna os nomes de todos os fornecedores no banco de dados da Adventure Works Cycles, os produtos que eles fornecem, suas classificações de crédito e sua disponibilidade.

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

    Importante

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

    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