JhonyMega 0 Denunciar post Postado Outubro 13, 2010 :( :( Bom to fazendo uma SELECT com vários JOIN e preciso fazer um loop do resultado dessa seleção. Preciso poder usar os valores dos campos para comparações. Sendo os resultados satisfatórios quero inserir em uma tabela TEMPORÁRIA, que será o retorno da PROCEDURE. COMO FAZER: http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif 1 - Como faso para fazer um loop do resultado de um SELECT passando linha por linha. 2 - Como usar esses valores da linha EX. (int i=0; (i++) linhaCampo) 3 - Como criar uma tabela temporária nomeio da aplicação de uma PROCEDURE e inserir valores e depois retorna la como SELECT original. Bom pessoal essas são as minhas duvidas ... Pois tentei fazer aqui em casa mas não consegui. Se puderem ajudar ficaria ficaria muito agradecido. :o :o Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 13, 2010 Um exeemplo usando GLOBAL TEMPORARY TABLE CREATE GLOBAL TEMPORARY TABLE gtt_exemplo ( mes_ano_ref DATE NOT NULL, valor_ NUMBER(14,2) NULL ) ON COMMIT PRESERVE ROWS / na sp BEGIN DELETE FROM GTT_TOTAIS_EVENTO_N_AAG; loop INSERT INTO gtt_exemplo end loop --trata a tmp DELETE FROM GTT_TOTAIS_EVENTO_N_AAG; Compartilhar este post Link para o post Compartilhar em outros sites
JhonyMega 0 Denunciar post Postado Outubro 13, 2010 Um exeemplo usando GLOBAL TEMPORARY TABLE CREATE GLOBAL TEMPORARY TABLE gtt_exemplo ( mes_ano_ref DATE NOT NULL, valor_ NUMBER(14,2) NULL ) ON COMMIT PRESERVE ROWS / na sp BEGIN DELETE FROM GTT_TOTAIS_EVENTO_N_AAG; loop INSERT INTO gtt_exemplo end loop --trata a tmp DELETE FROM GTT_TOTAIS_EVENTO_N_AAG; Pode coloar um exemplo, pois eu não sei a sintax. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 13, 2010 Sua dúvida parece mais de síntaxe plsql, seria bom baixar o manual da Oracle e dar uma lida, mas creio que este exemplo te ajude. create global temporary table gtt ( id int ) on commit delete rows; create or replace procedure foo( p_rand in number default dbms_random.value( 0, 5000 )) as l_cnt number := 0; begin insert into gtt select rownum from big_table where rownum <= p_rand; dbms_output.put_line( sql%rowcount || ' rows in gtt' ); for x in ( select /*+ dynamic_sampling(gtt 10) dynamic_sampling_est_cdn(gtt) */ big_table.* from big_table, gtt where big_table.id = gtt.id ) loop l_cnt := l_cnt+1; end loop; dbms_output.put_line( l_cnt || ' rows fetched' ); commit; end; / Fonte Compartilhar este post Link para o post Compartilhar em outros sites