Você sabe o que é e como criar uma procedure no SQL? Nesta aula vamos criar uma procedure simples para que você entenda o seu uso e passo a passo.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Fala Impressionadores! Na aula de hoje eu quero te mostrar o que é uma procedure no SQL, nesta aula vamos utilizar o PostgreSQL
Além disso, vou te mostrar como criar uma procedure e como abrir banco de dados no PostgreSQL, vamos falar especificamente do PostgreSQL, pois alguns SGBDs têm pequenas diferenças na hora de criar a procedure.
Então essa aula é específica para o PostgreSQL, se você ainda não instalou o PostgreSQL, clique no link, pois temos uma aula aqui no canal explicando como fazer a instalação dele!
E aí, bora aprender o que é e como criar uma procedure no SQL?
Se você não estiver usando o PostgreSQL eu recomendo que baixe, porque a estrutura para construir a procedure é quase padrão, mas ainda assim, existem algumas diferenças mínimas de sintaxe que podem interferir se você estiver usando outro banco de dados.
O que é uma Procedure no SQL?
Procedure é basicamente um bloco de código que executa alguma ação dentro do nosso banco de dados, é um conjunto de comando que podemos executar de uma vez e ele faz determinada tarefa. Podemos fazer uma procedure que, quando executada realiza uma transação entre duas contas.
Exemplo:
Se transfiro da conta A R$1000,00 reais para a conta B, então a conta A deve subtrair R$1000,00 reais e na conta B será somado os R$1000,00, certo? É esse o código que vamos construir agora.
Qual é a sintaxe para criar uma Procedure?
-- A sintaxe para criação de uma Procedure é a seguinte:
/*
create or replace procedure nome_procedure(parametros)
language plpgsql
as $$
declare
-- declaracao de variaveis
begin
-- corpo de código
end $$;
*/
No decorrer do exemplo prático vou explicar cada etapa da sintaxe, não se preocupe!
Também vamos precisar de um exemplo de tabelas com as contas dos usuários, vamos usar uma tabela bem simples contendo o id, nome e saldo:
create table contas(
id int,
nome varchar(100),
saldo decimal);
O primeiro passo é executar o código acima, selecione todo o código e execute.
Feito isso, vamos visualizar esta tabela usando o Select:
create table contas(
id int,
nome varchar(100),
saldo decimal);
Select = FROM contas;
Selecione e execute o Select. Feito isso, podemos inserir as informações da conta da Ana e do Bruno:
create table contas(
id int,
nome varchar(100),
saldo decimal);
Select = FROM contas;
insert into contas(id, nome, saldo)
values(1, 'Ana', 5000);
insert into contas(id, nome, saldo)
values(2, 'Bruno', 10000);
Selecione e execute os inserts das contas.
Agora, se rodarmos o Select novamente vamos ter uma tabela com a conta da Ana com o valor de 5000 e a conta do Bruno com o valor de 10000.
Exercício Prático
Crie uma Procedure que registra uma transação financeira realizada entre dois clientes. Sua Procedure deve registrar uma transferência de R$300 entre as contas da Ana e Bruno. A transação entre as contas e a atualização dos valores em ambas as contas devem ocorrer de modo simultâneo.
Passo a passo
create or replace procedure transferencia(origem int, destino int, valor decimal)
Na próxima linha vamos colocar qual linguagem vamos usar e após isso, os marcadores -> $$
create or replace procedure transferencia(origem int, destino int, valor decimal)
language plpgsql
as $$
and $$;
Os marcadores servem para indicar o início e fim da Procedure, já que no corpo do código temos muitas pontuações que indicam finalização como o ponto e vírgula, por exemplo, então utilizamos o marcador $$ para sinalizar o início e fim do código de forma mais clara.
create or replace procedure transferencia(origem int, destino int, valor decimal)
language plpgsql
as $$
begin
-- substituindo o montante transferido pela conta de origem
Update contas
Set saldo = saldo – valor
Where id = origem;
and $$;
Como o código substitui o montante?
Agora precisamos transferir o montante para a conta de destino, a estrutura será semelhante a que acabamos de construir acima:
create or replace procedure transferencia(origem int, destino int, valor decimal)
language plpgsql
as $$
begin
-- substituindo o montante transferido pela conta de origem
Update contas
Set saldo = saldo – valor
Where id = origem;
-- adicionando o montante transferido para a conta de destino
Update contas
Set saldo = saldo + valor
Where id = destino;
and $$;
Novamente, selecione todo o código e execute, já criamos a nossa Procedure!
A procedure já esta pronta só precisamos aprender como chamar a Procedure utilizando o comando call, como passar os dados na procedure e depois visualizar.
create or replace procedure transferencia(origem int, destino int, valor decimal)
language plpgsql
as $$
begin
-- substituindo o montante transferido pela conta de origem
Update contas
Set saldo = saldo – valor
Where id = origem;
-- adicionando o montante transferido para a conta de destino
Update contas
Set saldo = saldo + valor
Where id = destino;
and $$;
call transferencia(1, 2, 300)
select = FROM contas;
Selecione e execute a linha do comando call e depois novamente selecione e execute o comando Select. Observe que a nossa procedure fez a transferência corretamente, da conta da Ana saiu 300 e os 300 já foram acrescentados simultaneamente na conta do Bruno!
Então conseguimos criar nossa procedure perfeitamente!
Nesta aula fizemos uma procedure simples de transferência entre duas contas.
Nós podíamos ter deixado essa procedure mais robusta, fazendo com que ela não apenas transferisse os valores e ajustasse os saldos, mas, que também verificasse se o saldo da conta é suficiente para aquela transferência, poderíamos ter colocado um limite para transferência, etc.
Existem muitas formas de incrementar esse recurso, porém, o objetivo desta aula foi explicar de maneira simples o que é uma procedure e quais são suas possibilidades.
Espero por vocês! Até a próxima!
Para acessar outras publicações de SQL, clique aqui!
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.