Banco de Dados

16 ago, 2018

Afinal de contas, o que é uma Stored Procedure?

Publicidade

Stored Procedure contém comandos T-SQL que suportam parâmetros de entrada e saída, e que podem ou não retornar resultados.

Dentro de uma Stored Procedure, você pode escrever comandos DML (Data Manipulation Language = Insert, Delete, Update, Merge) e DDL (Data Definition Language – Create, Drop, Alter). Ou seja, você pode fazer muita coisa!

O SQL Server armazena em cache os planos de execução das consultas e, normalmente, os reutiliza em execuções subsequentes da procedure para economizar tempo, CPU e recursos de memória associados à otimização das consultas.

As Stored Procedures fornecem muitos benefícios em comparação à implementação da lógica de negócios no aplicativo. Eles encapsulam a lógica para permitir a reutilização e ocultam a complexidade. É muito mais fácil aplicar alterações a um procedimento armazenado com um comando ALTER PROCEDURE simples em comparação à implementação de alterações no aplicativo.

Além disso, com os procedimentos armazenados, você precisa ter menos tráfego de rede, pois quando você chama o procedimento armazenado a partir do aplicativo, tudo o que é passado pela rede é apenas o nome do procedimento e seus parâmetros. O fluxo é executado na engine do banco de dados e, em seguida, apenas o resultado final é enviado para o aplicativo.

Quando você implementa a lógica no aplicativo, geralmente são necessárias mais “viagens” entre o aplicativo e o banco de dados e, consequentemente, mais tráfego de rede. As Stored Procedures também simplificam o tratamento de segurança no banco de dados. Muitas vezes, você não deseja conceder aos usuários permissões para consultar diretamente e modificar dados nas tabelas. Em vez disso, você quer que eles consigam realizar essas tarefas apenas indiretamente por meio de procedimentos armazenados. Para conseguir isso, conceda aos usuários permissões EXECUTE na Stored Procedure, sem conceder acesso direto aos objetos.

Fofo, né? Dentro de uma procedure, a lógica é reaproveitável, além do desempenho ser melhor. Acredite em mim; é uma boa prática criar procedures!

Vamos ao exemplo, mas antes, lembre-se de algumas coisas:

  • Para criar ou alterar um objeto no SQL, você vai usar as palavras mágicas CREATE OR ALTER
  • Você quer criar uma PROCEDURE
  • A procedure deve ter um nome
  • A procedure pode ter parâmetros, e cada parâmetro tem um tipo, e pode ter um valor default
  • Dentro da procedure, você pode escrever diversos tipos de comandos
CREATE OR ALTER PROCEDURE dbo.GetOrders   (@orderid   AS INT  = 0)

AS

SELECT orderid, orderdate FROM Sales.Orders WHERE orderid   = @orderid    ; 

GO

Em nosso exemplo, a procedure chama GetOrders, recebe como parâmetro o orderid, que tem como valor default 0, e o retorno da execução são as colunas orderid, orderdate, da tabela Sales.Orders, onde a coluna orderid tem o valor igual ao parâmetro passado. Entenda que o valor do @orderid será substituído pelo valor do parâmetro de entrada.

@ é um símbolo usado na frente do nome das variáveis e parâmetros.

E como executar uma Stored Procedure? Simples, comando Execute:

Execute GetOrders 23

Conclusão

Aprender a criar stored procedures é essencial para você que quer ser um desenvolvedor de sucesso! Você pode criá-las tanto no SQL Server 2017 quanto no SQL Azure.

Leia a documentação oficial, use a nossa VM, faça testes, experiências e o sucesso é certo!

Referências e links úteis