Inserir um valor em uma variável quando o select não retorna

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
Robson Costa
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 155
Registrado em: Sex, 17 Out 2008 6:05 pm
Localização: Campo Grande - MS

Como faço para que uma variável receba um valor padrão quando o select não retornar linha nenhuma, como no exemplo abaixo:

select valor2 into variavel from tabela where valor1 = parametro
paulochagas
Moderador
Moderador
Mensagens: 86
Registrado em: Qua, 15 Mar 2006 2:46 pm
Localização: São Paulo - SP
Paulo Chagas Filho
__________________

Analista Funcional / Desenvolvedor Oracle EBS
MSN - paulochagas@hotmail.com
Gtalk - pachafi@gmail.com
Skype - paulochagas

Selecionar tudo

EXCEPTION
   WHEN NO_DATA_FOUND THEN
      variavel := <valor_padrão>;
END;
Agora a pergunta era sem tratamento de exceção??
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Humm,

Só complementando a discussão, você você quer fazer algo SEM tratamento de exceção (que neste caso é a codificação mais simples e direta), você pode então usar CURSORES.

Selecionar tudo

Exemplo:

DECLARE
   CURSOR cv_resultado IS
          SELECT valor 2
             FROM tabela
          WHERE valor1 = w_parametro;
   w_resultado tabela.valor2%TYPE;
BEGIN
    w_resultado := <valor_padrão>;
    OPEN  cv_resultado;
    LOOP
        FETCH cv_resultado into w_resultado;
        EXIT WHEN cv_resultado%NOTFOUND;
    END LOOP;
    CLOSE cv_resultado;
END;
Continuo achando que o SELECT .. INTO ..FROM .. WHERE .. (com tratamento de exceção) seria o mais rápido e simples para codificar.

Abraços,

Sergio Coutinho
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes