Blog

Postado em em 21 de abril de 2023

O que é e Como Criar uma Procedure no SQL [PostgreSQL]?

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)
O que é e Como Criar uma Procedure
1ª parte do código

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?

2ª parte do código
2ª parte do código

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!

Conclusão – Procedure no SQL

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!

Hashtag Treinamentos

Para acessar outras publicações de SQL, clique aqui!


Quer aprender mais sobre SQL com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador