Cursor

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
luiszacheu
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Seg, 31 Mai 2010 8:54 am
Localização: Londrina-Pr
Analista/Programador
Luís Gustavo Verri Zacheu

Sou iniciante em PL/SQL, por isso estou atormentando todos ai....
Bom gostaria de saber se é possivel eu percorrer 1 cursor mais de uma vez.
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Sim, você pode dar open, depois close e abrir de novo. Porém, lembre-se que "percorrer" cursor em loop é algo altamente indesejável, pois é lento: para transformações e, principalmente, para fazer inserts, selects, updates, deletes e tudo mais.

Quanto menos loops em cursor, melhor e mais eficiente o código, e menos complexo para dar manutenção e debug mais tarde.

Selecionar tudo

SQL> declare
  2    cursor cur_teste is
  3      select table_name from all_tables where rownum <= 5 and owner = 'SYS';
  4    type t_cur_teste is table of cur_teste%rowtype;
  5    v_teste t_cur_teste;
  6  begin
  7    open cur_teste;
  8    fetch cur_teste bulk collect into v_teste;
  9    close cur_teste;
 10    for i in 1 .. v_teste.count
 11    loop
 12      dbms_output.put_line(i || ' - ' || v_teste(i).table_name);
 13    end loop;
 14    open cur_teste;
 15    fetch cur_teste bulk collect into v_teste;
 16    close cur_teste;
 17    for i in 1 .. v_teste.count
 18    loop
 19      dbms_output.put_line(i || ' - ' || v_teste(i).table_name);
 20    end loop;
 21  end;
 22  /
 
PL/SQL procedure successfully completed
 
SQL> 
luiszacheu
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 53
Registrado em: Seg, 31 Mai 2010 8:54 am
Localização: Londrina-Pr
Analista/Programador
Luís Gustavo Verri Zacheu

obrigado, pela sua atenção!
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante