Modificar um procedimento armazenado
Este tópico descreve como modificar um procedimento armazenado no SQL Server 2012 usando o SQL Server Management Studio ou o Transact-SQL.
Antes de começar: Limitações e restrições, Segurança
Para alterar um procedimento usando: SQL Server Management Studio, Transact-SQL
Antes de começar
Limitações e restrições
[Início]
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.
Segurança
Permissões
[Início]
Requer a permissão ALTER PROCEDURE no procedimento.
Como modificar um procedimento armazenado
Você pode usar uma das seguintes opções:
SQL Server Management Studio
Transact-SQL
Usando o SQL Server Management Studio
Para modificar um procedimento no Management Studio
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e, em seguida, expanda essa instância.
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 a modificar e, depois, clique em Modificar.
Modifique o texto do procedimento armazenado.
Para testar a sintaxe, no menu Consulta, clique em Analisar.
Para salvar as modificações na definição do procedimento, no menu Consulta, clique em Executar.
Para salvar a definição do procedimento atualizada, como um script Transact-SQL, no menu Arquivo, clique em Salvar como. Aceite o nome de arquivo ou substitua-o por um nome novo e, então, clique em Salvar.
Observação sobre segurança |
---|
Valide toda a entrada 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. |
Usando Transact-SQL
Para modificar um procedimento no Editor de Consultas
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados e, depois, expanda essa instância.
Expanda Bancos de Dados e 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 AdventureWorks2012 .
No menu Arquivo, clique em 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.
USE AdventureWorks2012; GO 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
No menu Arquivo, clique em Nova Consulta.
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.
USE AdventureWorks2012; GO 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, clique em Executar.
Para salvar a definição do procedimento atualizada, como um script Transact-SQL, no menu Arquivo, clique em Salvar como. Aceite o nome de arquivo ou substitua-o por um nome novo e, então, clique em Salvar.
Para executar o procedimento armazenado modificado, execute o exemplo a seguir.
EXEC Purchasing.uspVendorAllInfo N'LL Crankarm'; GO
[Início]