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

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
Tipo | Para que serve | Exemplo |
Escalar | Alias para tipo simples | TYPE t_id IS NUMBER; |
Record | Conjunto de campos (como um struct) | TYPE t_pessoa IS RECORD (...) |
TABLE ou VARRAY | Lista de registros ou valores | TYPE 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
😅
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.