É simplérrimo : se vc usa cursor explícito, vc checa os atributos, existem  
nomedocursor%found (verdadeiro se o último fetch do cursor retornou linhas), 
nomedocursornotfound (verdadeiro se último fetch do cursor Não retornou nada), 
nomedocursor%rowcount (qtdade de linhas lido, vai ser ZERO se não achou 
ninguém... Pode ser algo tipo :

DECLARE
   CURSOR caller_cur IS
      SELECT caller_id, company_id FROM caller;
       caller_rec caller_cur%ROWTYPE;
BEGIN
   OPEN caller_cur;
   FETCH caller_cur INTO caller_rec;
   if caller_cur%NOTFOUND then
     dbms_output.put_line('Não achou nada');
   else....
   CLOSE caller_cur;
END;

Já se vc usa cursor implícito com FOR, o cursor só existe dentro do loop, se vc 
quer testar fora do loop se achou ou não alguém imho o mais fácil é usar uma 
booleana, ou ter um contador no loop, com boolean seria tipo :

DECLARE
   v_retornou  boolean := FALSE;
BEGIN
   for r in (select * from all_tables where 1=2) loop
      v_retornou := TRUE;
   end loop;
   -- 
   if v_retornou then
     dbms_output.put_line('retornou linhas');
   else
      dbms_output.put_line('não retornou');
...


 []s

   Chiappa
--- Em oracle_br@yahoogrupos.com.br, Elcio Francisco <elciofranci...@...> 
escreveu
>
> Pessoal gostaria de saber se tem como saber se um cursor esta vazio ou 
> não.Tentei varios comandos mas não consegui. Sera que algem podera me ajudar..
>  
> Obrigado
> 
> 
> Elcio Francisco 
> Analista de Sistemas 
> 
> 
>       
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a