CodeGym /Cursos /SQL SELF /Introdução ao PL/pgSQL

Introdução ao PL/pgSQL

SQL SELF
Nível 49 , Lição 0
Disponível

O PostgreSQL não fala só SQL! Olha só: PL/pgSQL (Procedural Language/PostgreSQL Structured Query Language) é uma linguagem procedural de programação que já vem no PostgreSQL. Ela foi criada pra facilitar operações mais complexas usando queries SQL e estruturas de controle, tipo condições (IF, CASE) e loops (LOOP, FOR, WHILE).

PL/pgSQL e SQL são tipo uma linha de montagem automatizada e uma ferramenta manual, tipo um martelo. O SQL, igual ao martelo, é confiável. Só que pra cada prego, você tem que levantar o braço e bater de novo. Já o PL/pgSQL é a linha de montagem: você diz uma vez o que tem que fazer, e aí tudo rola sozinho — executa comandos, guarda coisas, checa se deu ruim, e segue em frente de boa. Pra que martelar cada prego se dá pra só assistir tudo funcionando? Fala sério, é um sonho, né?

Comparando PL/pgSQL com queries SQL normais

Bora entender qual é a diferença do PL/pgSQL pros SQLs simples.

SQL é ótimo quando você precisa fazer uma tarefa só: tipo buscar todos os alunos de uma tabela ou adicionar uma linha nova. Mas, quando começa a entrar lógica tipo "se isso, então aquilo" ou precisa repetir ações, o SQL começa a ficar complicado.

Por exemplo, imagina que você precisa:

  1. Checar se já existe um registro do aluno na tabela.
  2. Se existir — atualizar os dados.
  3. Se não existir — adicionar um registro novo.

Com SQL puro, você teria que escrever várias queries e tratar o resultado no lado do cliente. Com PL/pgSQL, dá pra colocar tudo numa procedure só, que roda direto no banco.

PL/pgSQL brilha mesmo em projetos mais complexos. Ele deixa você:

  • guardar resultados intermediários em variáveis;
  • tratar erros pra não deixar o banco "cair" quando rola algo inesperado;
  • usar loops e condições pra rodar algoritmos mais cabulosos.

Onde usar PL/pgSQL

PL/pgSQL aparece bastante nos seguintes cenários:

  1. Automatização de tarefas. Tipo criar registros no log automaticamente (log) toda vez que algum dado é atualizado.

  2. Lógica de negócio. Você tem uma regra: todo aluno com mais de 5 faltas tem que ser marcado como "inativo" automaticamente. Por que não jogar essa regra numa função PL/pgSQL?

  3. Analytics e relatórios. Ao invés de ficar puxando dados do banco pro app, você pode agregar tudo direto no servidor.

  4. Triggers. PL/pgSQL é usado pra escrever triggers que fazem ações automáticas quando você insere, atualiza ou deleta dados.

Exemplo de uso do PL/pgSQL

Olha um exemplo de função que recebe dois números, soma e devolve o resultado:

CREATE FUNCTION add_numbers(a INT, b INT) RETURNS INT AS $$
BEGIN
    RETURN a + b;
END;
$$ LANGUAGE plpgsql;

Explicando:

  • CREATE FUNCTION add_numbers(a INT, b INT) — a gente cria uma função chamada add_numbers que recebe dois argumentos do tipo INT (inteiro).
  • RETURNS INT — diz que a função devolve um inteiro.
  • BEGIN ... END — é o bloco principal onde rola a lógica da função.
  • RETURN a + b; — devolve o resultado da soma.

Pra chamar essa função, é só usar uma query SQL normal:

SELECT add_numbers(10, 20);

Resultado: 30.

Pegadinhas e limitações

PL/pgSQL é uma ferramenta poderosa, mas tem que usar com cuidado:

  • Performance: funções muito complexas podem deixar o banco lento. Sempre testa e otimiza.
  • Testes: erros nas funções podem passar batido até você rodar elas. Não esquece de testar!
  • Legibilidade: funções e procedures grandes, cheias de lógica, podem ficar difíceis de entender. Escreve o código de um jeito que você consiga sacar daqui um mês.

Agora que você já tem uma ideia do que é PL/pgSQL, bora falar mais do seu sintaxe e das funções principais. Vamos aprender a criar blocos de código, declarar variáveis e trabalhar com tipos de dados nas próximas aulas. Bora programar direto no banco!

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION