function CF_TOTAL_PARESFormula return Number is
vtotal_pares number(8);
begin
if :pares_linha > 0 then
vtotal_pares := :pares_linha;
else
vtotal_pares := 0;
end if;
if vtotal_pares = 0 then
return(0);
else
return(vtotal_pares);
end if;
end;
IF extremamente duvidoso
-
- Rank: DBA Júnior
- Mensagens: 229
- Registrado em: Sex, 05 Set 2008 2:59 pm
- Localização: Igrejinha - RS
Encontrei isso hoje de manhã...
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Aparentemente, a pessoa que estava testando queria que quando fosse < 0 fosse atribuido o valor 0.
O que é mais legal não é ter outro if e sim o outro ser completamente dispensável.
Para que fazer um simples return(v_total_pares).
se pode ver se for 0 a variavel, retornar 0:
O que é mais legal não é ter outro if e sim o outro ser completamente dispensável.
Para que fazer um simples return(v_total_pares).
se pode ver se for 0 a variavel, retornar 0:
if vtotal_pares = 0 then
return(0);
else
return(vtotal_pares);
end if;
-
- Rank: DBA Júnior
- Mensagens: 229
- Registrado em: Sex, 05 Set 2008 2:59 pm
- Localização: Igrejinha - RS
Não é nem a questão de evitar pares negativos.
Pensando um pouco mais em regra de negócio, é impossível ter pares negativos.
Logo, a solução seria muito, mas MUITO mais simples.
E se quiser simplificar mais ainda, basta colocar o NVL direto na query
Pensando um pouco mais em regra de negócio, é impossível ter pares negativos.
Logo, a solução seria muito, mas MUITO mais simples.
RETURN NVL(:pares_linha, 0);
- dr_gori
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Pelo que eu entendi, se o número for negativo, tem que ir pra zero.
Então algo assim:
ou, dá pra fazer em uma linha só:
Então algo assim:
IF :pares_linha <= 0 --Se for menor que zero, retorna zero.
THEN return 0;
ELSE return :pares_linha; --Senão, retorna o próprio numero.
END IF;
RETURN DECODE ( SIGN(:pares_linha), -1, 0, :pares_linha)
-
- Rank: DBA Júnior
- Mensagens: 229
- Registrado em: Sex, 05 Set 2008 2:59 pm
- Localização: Igrejinha - RS
auheuaheuahe
- dr_gori
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Interessante quanta interpretação pode gerar um código duvidoso SEM comentários... É ai que a gente perde tempo, tentando adivinhar o que se passa na cabeça do cara que fez..
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes