Modificar um procedimento armazenado
Aplica-se a:Banco de Dados SQL do
Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics 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:
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e expanda essa instância.
Expanda Bancos de Dados, expanda o banco de dados ao qual o procedimento pertence e, em seguida, expanda Programabilidade.
Expanda Stored Procedures, clique com o botão direito no procedimento a modificar e, em seguida, selecione Modificar.
Modifique o texto do procedimento armazenado.
Para testar a sintaxe, no menu Consulta , selecione Analisar .
Para guardar as modificações na definição do procedimento, no menu Consulta, selecione Executar.
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:
No Pesquisador de Objetos , conecte-se a uma instância do Mecanismo de Banco de Dados e expanda essa instância.
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
.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 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
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 devolver apenas os fornecedores que fornecem o produto especificado. As funçõesLEFT
eCASE
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
Para guardar as modificações na definição do procedimento, no menu Consulta, selecione Executar.
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.
Para executar o procedimento armazenado modificado, execute o exemplo a seguir.
EXEC Purchasing.uspVendorAllInfo N'LL Crankarm'; GO