Um procedimento armazenado é um grupo de instruções SQL compiladas em uma. Os procedimentos armazenados podem incluir lógica de negócios e outras construções de programação.
No SQL Server, um procedimento armazenado é um grupo de uma ou mais instruções Transact-SQL ou uma referência a um método CLR (Common Runtime Language) do Microsoft .NET Framework.
Programabilidade
Um procedimento armazenado é mais do que apenas um script longo. É um script que foi salvo no SQL Server especificamente sob os Stored Procedures nó, e pode:
- Aceite parâmetros de entrada (e retorne vários valores na forma de parâmetros de saída para o programa de chamada).
- Contém instruções de programação.
- Retorne um valor de status para um programa de chamada para indicar sucesso ou falha e o motivo de qualquer falha.
Os procedimentos armazenados geralmente contêm lógica de negócios. Por exemplo, um procedimento armazenado pode aceitar parâmetros que são passados para ele e testar esses parâmetros usando
IF
declarações. Por exemplo, se o parâmetro for um valor, faça isso, se for outro valor, faça aquilo. Os procedimentos armazenados podem melhorar o desempenho em um aplicativo, porque o procedimento armazenado é analisado e otimizado assim que é criado e, em seguida, armazenado na memória. Executar uma consulta condicional via procedimento armazenado pode ser extremamente rápido - comparado a um aplicativo que envia uma consulta pela rede para o SQL Server e, em seguida, tem todos os dados retornados pela rede para que possa filtrar e selecionar apenas os registros nos quais está interessado.
Benefícios dos Procedimentos Armazenados
Aqui estão alguns dos principais benefícios do uso de procedimentos armazenados:
Benefício | Explicação |
---|---|
Programação modular | Você pode escrever um procedimento armazenado uma vez e chamá-lo várias vezes, de diferentes partes de um aplicativo (e até mesmo de vários aplicativos). |
Desempenho | Os procedimentos armazenados fornecem execução de código mais rápida e reduzem o tráfego de rede.
|
Segurança | Os usuários podem executar um procedimento armazenado sem precisar executar nenhuma das instruções diretamente. Portanto, um procedimento armazenado pode fornecer funcionalidade avançada de banco de dados para usuários que normalmente não teriam acesso a essas tarefas, mas essa funcionalidade é disponibilizada de maneira rigidamente controlada. |
Como criar um procedimento armazenado
Para criar um procedimento armazenado, use o
CREATE PROCEDURE
instrução, seguida pelo código que compõe o procedimento armazenado. Se o seu procedimento armazenado for aceitar parâmetros, eles precisam ser incluídos após o nome. CREATE PROCEDURE myStoredProcedure AS ... OR CREATE PROCEDURE myStoredProcedure @ParameterName DataType AS ...
Exemplo
Aqui está um exemplo de como criar um procedimento armazenado e, em seguida, executar esse procedimento armazenado.
-
Criar o procedimento armazenado
Execute a instrução a seguir no banco de dados Music que criamos ao longo deste tutorial.
Este exemplo cria um procedimento armazenado chamado AlbumsFromArtist. Ele seleciona todos os álbuns de um artista especificado quando o procedimento armazenado é executado.
CREATE PROCEDURE spAlbumsFromArtist @ArtistName varchar(255) AS SELECT AlbumName, ReleaseDate FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId WHERE Artists.ArtistName = @ArtistName; GO
-
Visualizar o procedimento armazenado
Expanda a Programabilidade> Procedimentos armazenados node sob o banco de dados aplicável para ver seu procedimento armazenado recém-criado. Você também pode expandir os Parâmetros do procedimento armazenado node para ver os parâmetros que você precisa passar ao executá-lo.
-
Executar o procedimento armazenado
Agora que o procedimento armazenado foi criado, você pode executá-lo usando umEXECUTE
declaração e passando quaisquer parâmetros necessários.
Em nosso exemplo, precisamos passar o nome do artista.
EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";
Como alternativa, você pode omitir o nome do parâmetro ao passar parâmetros. Assim:
EXECUTE spAlbumsFromArtist "Devin Townsend";
Alterar um procedimento armazenado
Você pode modificar seu procedimento armazenado com o
ALTER PROCEDURE
demonstração. Assim como quando você altera uma exibição, você pode alterar um procedimento armazenado simplesmente aplicando a nova definição de procedimento armazenado. -
Alterar o procedimento armazenado
Execute a seguinte instrução. Isso adiciona uma nova coluna aos resultados retornados pelo procedimento armazenado. Também adicionamos aliases aos nomes das colunas.
ALTER PROCEDURE spAlbumsFromArtist @ArtistName varchar(255) AS SELECT al.AlbumName, al.ReleaseDate, g.Genre FROM Albums al INNER JOIN Artists ar ON al.ArtistId = ar.ArtistId INNER JOIN Genres g ON g.GenreId = al.GenreId WHERE ar.ArtistName = @ArtistName; GO
-
Executar o procedimento armazenado
Agora que adicionamos oGenre
coluna para a exibição, o procedimento armazenado agora retorna essa coluna quando a executamos.
EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";