Partilhar via


Modificar um procedimento armazenado

Aplica-se a:Banco de Dados SQL doAzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Banco de Dados SQL no Microsoft Fabric

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

Limitações

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

Se a definição de procedimento anterior tiver sido criada usando WITH ENCRYPTION ou WITH RECOMPILE, essas opções serão habilitadas somente se forem incluídas na instrução ALTER PROCEDURE.

Permissões

É necessário ter permissão ALTER PROCEDURE para o procedimento.

Use 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 essa instância.

  2. Expanda Bancos de Dados, expanda o banco de dados ao qual o procedimento pertence e, em seguida, expanda Programabilidade.

  3. Expanda Stored Procedures, clique com o botão direito no procedimento a modificar e, em seguida, selecione Modificar.

  4. Modifique o texto do procedimento armazenado.

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

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

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

Importante

Valide todas as entradas do usuário. Não concatene a entrada do usuário antes de validá-la. Nunca execute um comando construído a partir de entradas de usuário não validadas. A entrada de utilizador não validada torna o seu banco de dados vulnerável a um tipo de vulnerabilidade chamado ataque de injeção SQL . Para obter mais informações, consulte injeção SQL.

Use 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 essa instância.

  2. Expanda Bancos de Dados, expanda o banco de dados ao qual pertence o procedimento. Ou, na barra de ferramentas, selecione o banco de dados na lista de bancos de dados disponíveis. Para este 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 Ciclos da Adventure Works, 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 devolver apenas os fornecedores que fornecem o produto especificado. As funções LEFT e CASE personalizam a aparência do conjunto de resultados.

    Importante

    Soltar e recriar um procedimento armazenado existente remove as permissões que foram explicitamente concedidas 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 guardar as modificações na definição do procedimento, no menu Consulta, selecione Executar.

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

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

    EXEC Purchasing.uspVendorAllInfo N'LL Crankarm';  
    GO