Fala galera, o último post dessa série será sobre Stored Procedures.
Tem muita possibilidade de desenvolvimento com procedures, desde a regras complexas contendo tratamento de dados,
manipulação de informação, integração entre sistemas a filtragem de um select.
Na maioria dos casos as procedures são utilizadas com parâmetros, ou seja, recebe informação, trabalha essa informação e toma uma ação.
Os tipos de parâmetros são equivalentes a todos os tipos de dados que o SQL Server contém.
Dentro de uma procedure posso utilizar vários comandos diferentes, desde a criação de uma nova tabela, chamada de uma function até a alteração de
algum dado ou um simples select recebendo parâmetros para filtrar.
Alguns exemplos
Recebendo parâmetros e inserindo dados em uma tabela
Listando informações utilizando filtro
Alterando valores de uma tabela
Boas praticas:
1) Utilize o mínimo de variáveis possível, isso evitará consumo de recurso do servidor sem necessidade. Ao invés de pegar um valor e colocá-lo em uma variável para depois comparar em um IF, podemos usar um IF EXISTS para comparar direto
pulando uma etapa.
2) Modere o uso de tabelas temporárias, esse objeto é trabalhado no tempdb, o que pode deixar todo o processo mais lento.
Como alternativa, pode-se usar um CTE (Commom table expression).
3) Evite loops muito grandes, dependendo do processo existem opções como UPDATE FROM que executam a alteração em bloco e não individualmente.
4) Procure sempre utilizar o máximo de filtros possíveis (parâmetros) na procedure para utilizá-los no WHERE das querys que serão executadas dentro da proc.
5) Na maioria dos casos, é muito importante utilizar parâmetros com período de datas.
6) Evite execução aninhada, ou seja, chamar proc dentro de proc, cabe o bom senso, em determinados casos é necessário, mas se puder não trabalhar dessa forma o ganho de desempenho será alto.
Como observado, as procedures são como parte de um "sistema", pode-se fazer praticamente o mesmo que uma regra de uma aplicação. É uma ferramenta que se bem usada é muito importante e bacana de se aprender.
Até a próxima.
Comments