Pular para o conteúdo

TYPE do tipo TABLE com atributo ROWTYPE

TYPE do tipo TABLE com atributo ROWTYPE

Friends,

    é possível criar uma collection com um atributo sendo ROWTYPE de uma tabela para depois fazer um INSERT ?


Olá pessoal !

Acima a indagação de um camarada. Antes que alguém questione a validade da solução que eu mostrei a ele, saiba que não costumo discutir contextos mas sim possibilidades em meus textos. A decisão sobre qual abordagem utilizar, é sempre do Analista/Desenvolvedor. Já a minha função aqui, é demonstrar como se faz ! 🙂

Então vamos lá…

-- Tabela que conterá os dados 

CREATE TABLE teste
(
 codigo     NUMBER,
 descricao  VARCHAR2(100)
)
/

DECLARE
   -- Type Table de um ROWTYPE
   TYPE tTable IS TABLE OF teste%ROWTYPE INDEX BY PLS_INTEGER;

   -- Variavel ROWTYPE
   vType      teste%ROWTYPE;

   -- Variavel Table  
   vTable     tTable;

BEGIN
   -- For para preencher os dados
   FOR x in 1..10 LOOP
      -- Inclui valor nos atributos da variavel ROWTYPE

      vType.codigo    := x;
      vType.descricao := 'DESCRICAO ' || x;

      -- Inclui o ROWTYPE na Table
      vTable(x) := vType;

      -- Printa os valores
      DBMS_OUTPUT.PUT_LINE
         (
          'Resultado: ' || vTable(x).codigo || ' - ' || vTable(x).descricao
         ); 

      -- Insere os dados na tabela
      INSERT INTO TESTE VALUES vTable(x);

   END LOOP;

EXCEPTION
   WHEN OTHERS THEN   
      DBMS_OUTPUT.PUT_LINE('rowtype test [ FAILED ] - ' || DBMS_UTILITY.FORMAT_ERROR_STACK);

END;
/

SQL > Procedimento PL/SQL concluído com sucesso.

Resultado: 1 - DESCRICAO 1
Resultado: 2 - DESCRICAO 2
Resultado: 3 - DESCRICAO 3
Resultado: 4 - DESCRICAO 4
Resultado: 5 - DESCRICAO 5
Resultado: 6 - DESCRICAO 6
Resultado: 7 - DESCRICAO 7
Resultado: 8 - DESCRICAO 8
Resultado: 9 - DESCRICAO 9
Resultado: 10 - DESCRICAO 10

Simples assim !

Um grande abraço

Sergio Willians

Sergio Willians

Sergio Willians é o fundador do GPO (Grupo de Profissionais Oracle) e possui quase 30 anos de experiência em tecnologias Oracle, sendo especialista em desenvolvimento Forms/Reports, PL/SQL e EBS (E-Business Suite) nos módulos Receivables, Payables e General Ledger. Atualmente trabalha na Scania Latin America, onde se dedica à área de integração de dados com Confluent Kafka. Sua paixão é compartilhar conhecimento com a comunidade Oracle, contribuindo para o crescimento e a excelência da plataforma.

Comentário(s) da Comunidade

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