Skip to main content

Command Palette

Search for a command to run...

Procedures vs Functions em PL/SQL: quando usar cada uma?

Updated
2 min read

Se você trabalha com PL/SQL, já deve ter se perguntado: qual a diferença entre uma procedure e uma function? E mais importante: quando usar cada uma?

Neste post, vou te mostrar as diferenças práticas com exemplos reais — sem enrolação.


🔍 Diferença principal

CaracterísticaProcedureFunction
Retorno diretoNão retorna valorRetorna obrigatoriamente um valor
ChamadaExecutada com EXEC ou em blocoPode ser chamada em SELECTs
Uso em queries❌ Não pode✅ Pode
Finalidade comumRealizar açõesCalcular e retornar algo

✅ Quando usar procedure?

Use procedures quando você quiser executar uma ação que pode envolver várias operações, como:

  • Inserções em múltiplas tabelas

  • Atualizações em massa

  • Envio de logs ou notificações

  • Execuções agendadas (jobs)

📌 Exemplo:

CREATE OR REPLACE PROCEDURE registrar_log(p_mensagem IN VARCHAR2) AS
BEGIN
  INSERT INTO logs (mensagem, data_registro)
  VALUES (p_mensagem, SYSDATE);
END;

✅ Quando usar function?

Use functions quando precisar calcular e retornar um valor, especialmente se for usar dentro de queries.

  • Calcular diferença de datas

  • Transformar ou formatar dados

  • Verificar regras (validações simples)

📌 Exemplo:

CREATE OR REPLACE FUNCTION idade_em_anos(p_data_nascimento IN DATE) RETURN NUMBER AS 
BEGIN 
    RETURN TRUNC(MONTHS_BETWEEN(SYSDATE, p_data_nascimento) / 12); 
END;

⚠️ Cuidados ao usar functions

  • Evite funções com inserções, updates ou deletes (efeitos colaterais)

  • Não use funções pesadas em grandes SELECTs — pode impactar a performance

  • Functions usadas em WHERE ou JOIN precisam ser otimizadas


🧠 Dica prática

Se a rotina modifica dados ou só executa comandos, vá de procedure.

Se a rotina precisa ser usada dentro de uma query ou retornar um valor, vá de function.


Conclusão

Entender quando usar procedure ou function melhora a performance, a organização do código e a legibilidade do seu PL/SQL. Use cada uma no seu contexto ideal — e seu sistema agradece!


Se curtiu esse conteúdo, me segue aqui ou no LinkedIn! Em breve trago mais dicas práticas de PL/SQL e desenvolvimento backend real-oficial.

More from this blog

Dev Prático: Carreira e Código

15 posts

Vivências, aprendizados e perrengues da vida dev.