Olá pessoal, como estão?!

Já pensaram em formas de armazenar uma determinada query ou um procedimento de rotina para não ter de reescrever o código sempre?!

Já imaginaram o quão fácil pode ser passar apenas valores e o comando retornar o resultado desejado de acordo com um determinado valor?!

É sobre este recurso que gostaria de falar, Stored Procedure ou Procedimentos Armazenados! Este que é um dos mais utilizados quando tratamos de rotina no banco de dados. Seja para backup, insert, update ou executar qualquer ação específica que o ambiente precisa, tenha certeza,  terá uma ou várias stored procedures lá!

CONCEITO

São blocos que encapsulam blocos com um valor de entrada e saída podendo retornar um valor único ou um conjunto de resultados dependendo da query executada.

Diferente das queries dinâmicas que não permitem múltiplas variáveis como entrada, com as procedures podemos ter múltiplos valores para variáveis, como no exemplo abaixo.

Veja abaixo como criar uma stored procedure básica.

ESTRUTURA DE UMA PROCEDURE SIMPLES
  1. Em branco um comando para apagar a procedure caso ela já existisse.
  2. A caixa amarela com o bloco de comando
  3. Sublinhado em vermelho, o comando de execução.

E abaixo, o resultado da execução do comando. Repare que como o select  está encapsulado na procedure, precisou apenas passar as datas para as variáveis.

RESULTADO

E PORQUE UTILIZAR STORED PROCEDURE?!

Além da praticidade de executar um bloco de comando sem precisar digitar, ela traz os seguintes benefícios:

  • Facilidade de manutenção e mudança bastando apenas alterar a procedure e todos os usuários poderão ter acesso a nova versão;
  • Maior segurança do ambiente já que é permitido controlar o acesso a quem pode ou não executar uma procedure do banco, evitando possíveis problemas;
  • Possibilidade de implementar tratamentos de erros que podem ser analisados em outros momentos.(dependendo da gravidade!!!)
  • Procedures podem reutilizar o mesmo plano de execução otimizado garantindo maior performance com o banco e além disso, o tráfego de rede também é menor. 

Veja esta procedure abaixo:

ERRO DE RECURSÃO

Ainda que todo o código tenha sido criado de forma correta só pelo fato de não ter GO, quando executamos o bloco, temos o retorno deste erro. Isso porque o comando é executado como um bloco único, inclusive o próprio EXEC que chamou a procedure.

Entrando em recursão, a procedure acaba falhando quando rexecuta o comando 32x!!!

Como dito no post sobre batchs, cada vez que declaramos um GO ao final do bloco, estamos passando que ele chegou ao fim, o que não ocorreu no exemplo acima!

NÃO ESQUEÇA DO GO AO FINAL!

Acima, podemos ver a procedure devidamente estruturada.

RESUMO

Procedures possuem uma infinidade de recursos e benefícios que facilitam em muito a vida de quem trabalha com banco de dados.

Além de automatizar diversas tarefas, vimos o quão fácil é para realizar consultas quando já estão armazenadas no banco.

Não esquecendo de mencionar que são muito seguras para qualquer ambiente ainda mais se formos considerar que cada procedure pode receber uma autorização individual ou no comando EXEC como um todo!

Usem procedures!

E deixo aqui o link para alguns exemplos do uso de procedures!!