Eae gente bonita, tudo bem com vocês? Continuando nossa série de publicações, hoje nós vamos falar sobre procedures!
O que é?
Procedures ou store procedures, é um conjunto de comandos tal qual funções que são armazenados e executados quando necessários, recebendo parâmetros ou não. É comum ser utilizada muitas vezes para reduzir o tráfego na rede, melhorar o desempenho de um banco de dados, criar tarefas agendadas, diminuir riscos, criar rotinas de processamento, etc.
As procedures são consideradas seguras por muitos porque com o seu uso nenhuma aplicação tem necessidade de ter acesso direto as tabelas.
Procedure vs Function
Bom, se você me acompanha, deve ter lido ou visto que postei um artigo falando sobre como usar function no SQL, então para que você não saia daqui com mais dúvidas, vou explicar um pouco da diferença entre os dois.
Característica | Procedure | Function |
---|---|---|
Retorna valor? | Opcional (pode retornar conjunto de resultados) | Sim (obrigatório) |
Modifica dados? | Sim (pode executar INSERT , UPDATE , DELETE ) |
Não (apenas leitura) |
Pode ser chamada em SELECT ? |
Não | Sim |
Uso principal | Executar processos complexos | Retornar um cálculo ou transformação |
Como usar?
Agora vamos botar a mão na massa! Aqui vou deixar o link para que você possa criar o mesmo banco de dados que o meu.
Vamos a um exemplo bem simples, vamos criar uma procedure que altera o status de todas as tarefas para pending. Porém, o status antigo será passado por parâmetro.
create or replace procedure updateStatusToPending(oldStatus varchar(50))
language plpgsql
as $$
declare
-- Declaração de variaveis
begin
update todos set status = 'pending' where status = oldStatus;
end
$$;
Feito isso, agora nós temos uma procedure que altera todos os status para pending.
Diferente da function que usamos o select para chamar, aqui nós vamos usar a palavra-chave call como no exemplo abaixo:
call updateStatusToPending('completed')
Após rodarmos esse script e consultar o banco, veremos que não existe mais nenhum todo com status completed.
É importante pontuar que na sintaxe da procedure existe um local correto para a declaração de variáveis, as mesmas não podem ser criadas em qualquer momento no script.
Vamos finalizar excluindo a procedure do nosso banco com o comando abaixo:
drop procedure updateStatusToPending
Aqui finalizo esse breve texto sobre procedure, fique a vontade para mandar dúvidas e sugestões nos comentários.
Fontes
Se chegou até aqui, me segue la nas redes vizinhas.
Top comments (0)