TYPES em PL/SQL: o que são, como funcionam e quando usar?

Matheus AlmeidaMatheus Almeida
3 min read

Se você já se deparou com TYPE em um código PL/SQL e não entendeu muito bem pra que servia, fica tranquilo! Neste post vou te mostrar, com exemplos, como os TYPES funcionam, quando eles fazem diferença e como usar com segurança em sistemas reais.


🧠 O que são TYPES em PL/SQL?

TYPE é uma forma de definir um tipo de dado personalizado. Pode ser usado para:

  • Criar tipos escalares (como alias para tipos simples)

  • Definir registros (records) com múltiplos campos

  • Criar coleções (arrays), como tabelas ou listas

Eles ajudam a organizar dados, deixar o código mais legível e facilitar a manipulação de conjuntos de informações.


📦 Tipos mais comuns

TipoPara que serveExemplo
EscalarAlias para tipo simplesTYPE t_id IS NUMBER;
RecordConjunto de campos (como um struct)TYPE t_pessoa IS RECORD (...)
TABLE ou VARRAYLista de registros ou valoresTYPE t_lista IS TABLE OF ...

✅ Exemplo 1: TYPE escalar

DECLARE
  TYPE t_codigo IS NUMBER(5);
  v_cod t_codigo;
BEGIN
  v_cod := 101;
END;

🔹 Útil quando você quer reaproveitar um tipo com mais clareza e consistência.


✅ Exemplo 2: TYPE RECORD (tipo registro)

DECLARE
  TYPE t_usuario IS RECORD (
    id_usuario   NUMBER,
    nome         VARCHAR2(100),
    email        VARCHAR2(100)
  );

  v_user t_usuario;
BEGIN
  v_user.id_usuario := 1;
  v_user.nome := 'João';
  v_user.email := 'joao@email.com';
END;

🔹 Ótimo para representar uma linha de tabela ou dados compostos.


✅ Exemplo 3: TYPE TABLE (coleção de registros)

DECLARE
  TYPE t_lista_nomes IS TABLE OF VARCHAR2(50);
  v_nomes t_lista_nomes := t_lista_nomes('Ana', 'Bruno', 'Carlos');
BEGIN
  FOR i IN 1 .. v_nomes.COUNT LOOP
    DBMS_OUTPUT.PUT_LINE(v_nomes(i));
  END LOOP;
END;

🔹 Muito útil para passar listas como parâmetro para procedures ou para processar coleções em loops.


⚙️ Onde usar TYPES?

  • Dentro de procedures, functions ou packages

  • Para representar linhas de cursor

  • Para devolver coleções de dados

  • Para organizar parâmetros de entrada e saída


🧩 Dica real de uso

Se você tem procedures que recebem muitos parâmetros, considere usar um RECORD TYPE para agrupá-los. Fica mais limpo, legível e fácil de manter.


🚫 Cuidados ao usar TYPES

  • TYPES locais (dentro de procedures) não podem ser usados fora delas

  • Se quiser reutilização global, declare no PACKAGE SPEC

  • Evite tipos complexos desnecessários se um simples VARCHAR2 resolver


Conclusão

Usar TYPE em PL/SQL é uma forma poderosa de escrever código mais organizado, seguro e reutilizável. Eles facilitam a leitura, reduzem erros e são ideais para trabalhar com dados estruturados e coleções.


Se você curtiu esse conteúdo e quer mais dicas práticas de PL/SQL, me segue aqui ou no LinkedIn. E compartilha com aquele colega que vive fazendo SELECT * sem TYPE 😅

0
Subscribe to my newsletter

Read articles from Matheus Almeida directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Matheus Almeida
Matheus Almeida

Desenvolvedor focado em PL/SQL, Java, Angular e qualidade de código.