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:
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e expanda-a.
Expanda Bancos de Dados, expanda o banco de dados ao qual pertence o procedimento e expanda Programação.
Expanda Procedimentos Armazenados, clique com o botão direito do mouse no procedimento que deseja modificar e selecione Modificar.
Modifique o texto do procedimento armazenado.
Para testar a sintaxe, no menu Consulta, selecione Analisar.
Para salvar as modificações na definição do procedimento, no menu Consulta, selecione Executar.
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:
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e expanda-a.
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
.No menu Arquivo, selecione Nova Consulta.
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
No menu Arquivo, selecione Nova Consulta.
Copie e cole o exemplo a seguir no editor de consultas. O exemplo modifica o procedimento
uspVendorAllInfo
. A cláusulaEXECUTE AS CALLER
é removida e o corpo do procedimento é modificado para retornar apenas os fornecedores que fornecem o produto especificado. As funçõesLEFT
eCASE
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
Para salvar as modificações na definição do procedimento, no menu Consulta, selecione Executar.
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.
Para executar o procedimento armazenado modificado, execute o exemplo a seguir.
EXEC Purchasing.uspVendorAllInfo N'LL Crankarm'; GO