Consistência em cascata

Este forum é dedicado a códigos errados que se encontram por aí, ou seja, coisas que não se deve fazer de jeito nenhum! Não coloque neste forum dúvidas! (apenas situações bizarras do nosso dia a dia :-)
Responder
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Aí vai mais um exemplo de coisa que não se deve fazer.
Bom, esse exemplo não é uma reprodução fiel do programa em questão. Estou fazendo um resumo do programa que tem uma consistência complicada e difícil de se entender. Veja do que eu falo:

Selecionar tudo

IF testa algo
THEN Mensagem de erro. para programa.
ELSE
  IF testa outra coisa
  THEN Mensagem de erro. para programa.
  ELSE
    IF testa outra coisa qualquer
    THEN  Mensagem de erro. para programa.
    ELSE
      --se passou todas consistências, roda a rotina.
      aqui vai o código do programa.
      .
      .
      .
    END IF;
  END IF; 
END IF;
O programador poderia simplesmente ter feito da seguinte forma muito mais fácil de se entender.

Selecionar tudo

IF testa algo
THEN Mensagem de erro. para programa.
END IF;

IF testa outra coisa
THEN Mensagem de erro. para programa.
END IF;

IF testa outra coisa qualquer
THEN  Mensagem de erro. para programa. 
END IF;

--se passou todas consistências, roda a rotina.
aqui vai o código do programa.
.
.
.
:(
Avatar do usuário
TBou
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 136
Registrado em: Qui, 05 Ago 2004 9:33 am
Localização: Campo Grande - MS
Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas

Exatamente DR. Gori
e para melhorar aida poderia declarar uma exception veja:

Selecionar tudo

declare
  V_MENSAGEM  VARCHAR2(2000);
  E_GERAL     EXCEPTION;
BEGIN
  IF testa algo THEN 
    V_MENSAGEM := Mensagem de erro. para programa;
    RAISE E_GERAL;
  END IF;
  
  IF testa outra coisa THEN 
    V_MENSAGEM := Mensagem de erro. para programa;
    RAISE E_GERAL;
  END IF;
  
  IF testa outra coisa qualquer THEN  
    V_MENSAGEM := Mensagem de erro. para programa;
    RAISE E_GERAL;
  END IF; 

  ai se passou pelas validações sem cair no Exception 
  continua executando o procedimento

EXCEPTION
  WHEN E_GERAL THEN
    manda a mensagem para o usuario;
END;

Responder
  • Informação
  • Quem está online

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