1 - Uso do WHILE com EXIT WHEN SQL> 1 create or replace 2 function conta_ate_espaco(texto in varchar2) return number is 3 i number := 1; 4 vResult number := 0; 5 begin 6 while i <= length(texto) loop 7 if substr(texto, i, 1) != ' ' then 8 vResult:= vResult + 1; 9 i:= i+1; 10 end if; 11 exit when substr(texto, i, 1) = ' '; -- vai sair do loop quando encontrar um espaço 12 end loop; 13 -- return é executado após o fim do loop ou quando exit when da linha 11 é executado. 14 return vResult; 14* end; SQL> 2 - Usando rótulos para identificar loops. EXEMPLO 1: SQL> 1 create or replace 2 function conta_ate_espaco(texto in varchar2) return number is 3 i number := 1; 4 vResult number := 0; 5 begin 6 <<conta_char>> -- define um rótulo 7 while i <= length(texto) loop 8 if substr(texto, i, 1) != ' ' then 9 vResult:= vResult + 1; 10 i:= i+1; 11 end if; 12 exit when substr(texto, i, 1) = ' '; 13 end loop conta_char; -- finalize o loop e opcionalmente informe o nome do rótulo 14 return vResult; 15* end; SQL> / EXEMPLO 2: SQL> 1 create or replace procedure imprime_tabuada is 2 vNumero number := 1; 3 i number := 1; 4 begin 5 <<inicio_rotina>> 6 for vNumero in 1..10 loop 7 i := 1; 8 <<tabuada>> 9 loop 10 dbms_output.put_line(to_char(vNumero) || 'x' || 11 to_char(i) || ' = ' || to_char(vNumero*i)); 12 exit tabuada when i = 10; 13 i := i + 1; 14 end loop tabuada; 15 end loop inicio_rotina; 16* end; SQL> EXEMPLO 3 SQL> 1 create or replace procedure conta_ate_10 is 2 i number := 1; 3 begin 4 <<conta>> 5 loop 6 dbms_output.put_line(i); 7 exit when i = 10; 8 i := i + 1; 9 end loop; 10* end; SQL> 3 - Usando a instrução GOTO. SQL> 1 create or replace procedure conta_ate_10_com_goto is 2 i number := 1; 3 begin 4 loop 5 dbms_output.put_line(i); 6 if i = 10 then 7 goto fim; 8 end if; 9 i := i + 1; 10 end loop; 11 <<fim>> 12 null; -- necessário uma instrução após o rótulo ou um erro é gerado 13* end; SQL>
Pesquisar este blog
segunda-feira, 18 de janeiro de 2010
Dicas e Truques PL/SQL - Parte 2
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário