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:
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. Para obter mais informações, confira Injeção de SQL
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
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.
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.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
Próximas etapas
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários