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, tenho acompanhado os seus artigos e gostado muito. Parabéns pelo empenho !
Obrigado Gio ! Posso garantir que muitos outros ainda virão !