Pular para o conteúdo

Trabalhando com Tipos de Dados Compostos em PL/SQL Oracle: Registros e Coleções

Como Trabalhar com Tipos de Dados Compostos em PL/SQL Oracle: Registros e Coleções

Introdução

O PL/SQL, a linguagem procedural do Oracle Database, oferece uma variedade de recursos avançados que permitem aos desenvolvedores criar aplicações robustas e de alto desempenho. Entre esses recursos estão os tipos de dados compostos, como registros e coleções, que oferecem uma maneira eficiente de armazenar e manipular múltiplos valores em uma única variável.

Este artigo discutirá em detalhes como trabalhar com registros e coleções em PL/SQL. Vamos abordar os principais conceitos, fornecer exemplos de código e demonstrar como esses tipos podem ser aplicados para resolver problemas complexos.

Registros em PL/SQL

Um registro é uma variável composta que pode conter múltiplos campos com tipos de dados potencialmente diferentes.

Definição e Uso de Registros

Vamos supor que temos uma tabela chamada empregados com as seguintes colunas: id, nome e salario.

CREATE TABLE empregados (
    id NUMBER PRIMARY KEY,
    nome VARCHAR2(50),
    salario NUMBER(10, 2)
);

Podemos definir um tipo de registro que corresponde à estrutura dessa tabela:

DECLARE
    TYPE t_empregado IS RECORD (
        id NUMBER,
        nome VARCHAR2(50),
        salario NUMBER(10, 2)
    );
    meu_empregado t_empregado;
BEGIN
    meu_empregado.id := 1;
    meu_empregado.nome := 'Alice';
    meu_empregado.salario := 5000.00;
    
    DBMS_OUTPUT.PUT_LINE('ID: ' || meu_empregado.id);
    DBMS_OUTPUT.PUT_LINE('Nome: ' || meu_empregado.nome);
    DBMS_OUTPUT.PUT_LINE('Salário: ' || meu_empregado.salario);
END;
/
ID: 1
Nome: Alice
Salário: 5000.00

Registros de Tabela (ROWTYPE)

ROWTYPE é uma forma eficiente de declarar um tipo de registro que corresponde a uma linha em uma tabela existente.

DECLARE
    meu_empregado empregados%ROWTYPE;
BEGIN
    SELECT * INTO meu_empregado FROM empregados WHERE id = 1;
    
    DBMS_OUTPUT.PUT_LINE('ID: ' || meu_empregado.id);
    DBMS_OUTPUT.PUT_LINE('Nome: ' || meu_empregado.nome);
    DBMS_OUTPUT.PUT_LINE('Salário: ' || meu_empregado.salario);
END;
/
ID: 1
Nome: John
Salário: 7000.00

Coleções em PL/SQL

Coleções são variáveis compostas que podem armazenar múltiplos elementos, semelhante a arrays em outras linguagens de programação.

Tipos de Coleções
  1. VARRAYs: Arrays com tamanho fixo.
  2. Tabelas Indexadas: Semelhantes a arrays, mas sem um tamanho fixo.
  3. Tabelas Aninhadas: Utilizadas para armazenar conjuntos não ordenados de elementos.
VARRAYs
DECLARE
    TYPE t_numeros IS VARRAY(10) OF NUMBER;
    meus_numeros t_numeros := t_numeros(1, 2, 3, 4, 5);
BEGIN
    meus_numeros.EXTEND;
    meus_numeros(6) := 6;
    
    FOR i IN 1..meus_numeros.COUNT LOOP
        DBMS_OUTPUT.PUT_LINE('Número ' || i || ': ' || meus_numeros(i));
    END LOOP;
END;
/
Número 1: 1
Número 2: 2
Número 3: 3
Número 4: 4
Número 5: 5
Número 6: 6
Tabelas Indexadas
DECLARE
    TYPE t_index_table IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
    meus_numeros t_index_table;
BEGIN
    meus_numeros(1) := 10;
    meus_numeros(2) := 20;
    meus_numeros(3) := 30;
    
    FOR i IN 1..meus_numeros.COUNT LOOP
        DBMS_OUTPUT.PUT_LINE('Número ' || i || ': ' || meus_numeros(i));
    END LOOP;
END;
/
Número 1: 10
Número 2: 20
Número 3: 30
Tabelas Aninhadas
DECLARE
    TYPE t_nested_table IS TABLE OF NUMBER;
    meus_numeros t_nested_table := t_nested_table(100, 200, 300);
BEGIN
    FOR i IN 1..meus_numeros.COUNT LOOP
        DBMS_OUTPUT.PUT_LINE('Número ' || i || ': ' || meus_numeros(i));
    END LOOP;
END;
/
Número 1: 100
Número 2: 200
Número 3: 300

Conclusão

Tipos de dados compostos como registros e coleções oferecem uma maneira robusta e eficiente de manipular múltiplos valores dentro do PL/SQL. Eles são fundamentais para a construção de aplicações escaláveis e de alto desempenho com Oracle Database.

Este artigo foi projetado para ser um guia para entender como trabalhar com registros e coleções em PL/SQL. Espero que você ache esses exemplos e explicações úteis em seu trabalho com Oracle Database.

Abs

Referências

  • Oracle Corporation, “PL/SQL User’s Guide and Reference,” Oracle Database 19c. Link

Giovano Silva

Giovano Silva

Giovano Silva é um profissional com mais de 10 anos de experiência em tecnologias Oracle, com ênfase em PL/SQL. Ele adora escrever sobre soluções para problemas comuns enfrentados por profissionais Oracle em seu dia a dia. Seu objetivo é compartilhar conhecimento, simplificar conceitos complexos e ajudar a comunidade Oracle a crescer coletivamente.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress