TYPE … IS TABLE OF - BULK COLLECT
PL/SQL é um universo, estamos em débito com ela aqui no Estação ....
Por favor, vamos jogar os "goto pula" pra casa do landjah!!! O mundo agradece!! ... e o unverso diz AMÉM!!!
No Oracle (10i ), para persistir em memória um conjunto de registros de uma tabela qualquer para mais adiante usá-los:
Passo 1) Declare um array do tipo RowType da tabela a qual deseja armazenar:
DECLARE
I INTEGER;
TYPE My_TIPO_tabela IS TABLE OF <Table name> %ROWTYPE;
V_TabTemp My_TIPO_tabela;
Passo 2) Parra carregar o vetor “V_TabTemp”:
begin
-- Test statements here
SELECT *
BULK COLLECT INTO V_TabTemp
FROM
<table name>
WHERE
<condições>
Passo 3) Imprimindo os dados:
FOR i IN 1..2
dbms_output.put_line(' Dado teste' || V_TabTemp.<ColumnName>(i));
END;
Passo 4) Fazer um insert numa tabela cujo as colunas sejam idênticas as do vetor:
FORALL I IN 1.. V_TabTemp.COUNT
INSERT INTO <tableName> VALUES V_TabTemp.(I);
Exemplo:
DECLARE
type AVet is table of Clientes%rowtype;
i integer;
VetImportaClientes AVet;
BEGIN
-- ***** IMPORTAÇÃO dos Clientes
i := 0;
select
* bulk collect into VetImportaClientes
from
ClientesA
where
ClientesA.Tipo = 'J';
forall i in 1.. VetImportaClientes.count
insert into PossiveisClientesB values VetImportaClientes(i)
Nenhum comentário:
Postar um comentário