← Voltar ao Blog

Trabalhando com Coleções em PL/SQL: Associative Arrays, Nested Tables e VARRAYs

Publicado em: 23/07/2026 09:15 PL/SQL

Armazenando e Manipulando Conjuntos de Dados em Memória

Em rotinas complexas de banco de dados, frequentemente precisamos armazenar temporariamente conjuntos de registros ou listas de valores em memória para processamento procedural, validação de regras de negócio ou manipulação em lote antes de persistir os dados definitivamente nas tabelas físicas. Para atender a essa necessidade, o PL/SQL disponibiliza estruturas de dados compostas conhecidas como Coleções.

Neste artigo, detalharemos os três tipos de coleções suportados pelo PL/SQL e quando utilizar cada um deles para maximizar a performance das suas procedures e packages.

Os Três Tipos de Coleções em PL/SQL

O ecossistema PL/SQL oferece três estruturas distintas de coleções, cada uma com características próprias de indexação, tamanho e persistência:

Exemplo prático de declaração e uso de um Associative Array:

Métodos Nativos de Manipulação (Collection Methods)

O PL/SQL fornece funções e procedimentos embutidos (métodos) extremamente úteis para inspecionar e manipular o estado das coleções em tempo de execução:

Exemplo prático populando uma Nested Table com EXTEND:

Boas Práticas de Performance

  1. Prefira Associative Arrays para processamentos locais rápidos: Se você precisa apenas de um dicionário em memória dentro da procedure para cruzar dados sem persistir em tabelas, os associative arrays indexados por inteiros oferecem excelente performance.
  2. Cuidado com o consumo de PGA: Assim como no BULK COLLECT, evite carregar coleções massivas com centenas de milhares de linhas desnecessariamente em memória procedural para não impactar a PGA da sessão.

Conclusão

Dominar o uso de coleções e arrays em PL/SQL capacita o desenvolvedor a estruturar algoritmos procedurais complexos, limpos e altamente eficientes diretamente na camada de banco de dados.