Banco de Dados

13 fev, 2008

Dominando Stored Procedures

Publicidade

Recebi muitos e-mails com perguntas referentes à Procedures SQL. Então, neste artigo falerei um pouco mais sobre estas funções muito úteis para o dia-dia de DBAs e desenvolvedores e ensinarei passo-a-passo a criar uma stored procedure baseado no SQL Server.

Stored Procedure, traduzido Procedimento armazenado, é uma biblioteca de comandos em SQL para utilização junto ao banco de dados.

Ela armazena tarefas repetitivas e aceita parâmetros de entrada para que a tarefa seja efetuada de acordo com a necessidade individual.

Uma Stored Procedure pode reduzir o tráfego na rede, melhorar a performance de um banco de dados, criar tarefas agendadas, diminuir riscos, criar rotinas de processsamento, etc.

Por todas estas e outras funcionalidades é que as stored procedures são de extrema importância para os DBAs e desenvolvedores.

Há 5 Procedimentos (Procedures) básicos que podemos criar:

  • Procedimentos Locais – São criados a partir de um banco de dados do próprio usuário;
  • Procedimentos Temporários – Existem dois tipos de procedimentos temporários:
  • Locais, que devem começar com # e Globais, que devem começar com ##;
  • Procedimentos de Sistema – Armazenados no banco de dados padrão do SQL Server (Master), podemos indentifica-los com as siglas sp, que se origina de stored procedure. Tais procedures executam as tarefas administrativas e podem ser executadas a partir de qualquer banco de dados.
  • Procedimentos Remotos – Podemos usar Queries Distribuídas para tais procedures. São utilizadas apenas para compatibilidade.
  • Procedimentos Estendidos – Diferente dos procedimentos já citados, este tipo de procedimento recebe a extensão .dll e são executadas fora do SGBD SQL Server. São identificadas com o prefixo xp.

Quando utilizar procedures

  • Quando temos várias aplicações escritas em diferentes linguagens, ou rodam em plataformas diferentes, porém executam a mesma função.
  • Quando damos prioridade à consistência e segurança.

Os bancos (Itaú, Bradesco, Real, etc), por exemplo, em geral, utilizam stored procedures para todas as operações em comum. Os procedimentos podem assegurar que as operações sejam registradas de forma correta e segura.

Por que é mais seguro?

Seguindo a linha de raciocínio dos bancos, utilizando stored procedures outras aplicações e usuários não conseguiriam nenhum tipo de acesso às tabelas do banco de dados de forma direta.

Eles poderiam apenas executar as stored procedures, que rodam ações específicas e determinadas pelos DBAs e desenvolvedores.

Criando uma stored Procedure

Este é um exemplo de uma stored procedure que executa uma consulta utlizando um filtro por descrição, em uma tabela específica de nosso banco de dados.

USE BancoDados

GO

CREATE PROCEDURE Busca — Declarando o nome da procedure

@CampoBusca VARCHAR (20) — Declarando variável (note que utilizamos o @ antes do nome da variável)

AS

SELECT Codigo, Descrição — Consulta

FROM NomeTabela

WHERE Descricao = @CampoBusca — Utilizando variável como filtro para a consulta

Para executar uma procedure basta utiilizar a cláusula EXECUTE seguido pelo nome da procedure e na frente o valor a ser utilizado como parâmetro.

Exemplo:

EXECUTE Busca ‘iMasters’

O que nos retornaria o seguinte resultado:

Para deletar uma procedure é necessário utilizar a cláusula DROP PROCEDURE como no exemplo abaixo.

DROP PROCEDURE Busca.

Bem, espero ter ajudado àqueles que se interessam pelo assunto.

Qualquer dúvida ou sugestão me encaminhem por e-mail que terei o maior prazer em respondê-los.