GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

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

Share

You may also like...

2 Responses

  1. gioracle disse:

    Sergio, tenho acompanhado os seus artigos e gostado muito. Parabéns pelo empenho !

  2. Obrigado Gio ! Posso garantir que muitos outros ainda virão !

Deixe um comentário

O seu endereço de e-mail não será publicado.