Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcelo A R Medeiros

Database Error: ORA-01476 Divisor is Equal to Zero

Recommended Posts

Ocorre quando o divisor é zeroa claro , onde está a expressão na linha de select ou na condição where ?

 

Em geral a melhor solução e tratar pois a divisão por zero não tem significado matemático sendo melhor anular seu resultado.

 

select (case when qtd = 0 tehn null else (preco/qtd) end) preco_medio
from vendas

 

ou

 

 

select  (preco/qtd) preco_medio
from vendas
where qtd <> 0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta,

 

No meu caso é um pouco mais complexo, não posso tratar com where pois eu anularia alguns outros resultados, e quanto trato no select (que é o que eu faço hoje), funciona para o que tinha. Mas estamos fazendo uns testes tentando otimizar os números de consultas que temos em um relatório, então o valor que tenho de exchange, as vezes tenho que multiplicar por ZERO, é mais ou menos assim...

 

Exemplo de como é feito hoje (funciona perfeitamente):

CASE WHEN sum(VL_EXCHANGE_RATE) = 0 THEN 0 ELSE sum((((VL_ACCOUNTANT / VL_UNIT) / VL_EXCHANGE_RATE) / FACTOR)) end

Exemplo do que esta me dando o erro agora:

CASE WHEN sum(VL_EXCHANGE_RATE*YTD_CY) = 0 THEN 0 ELSE sum((((VL_ACCOUNTANT / VL_UNIT) / (VL_EXCHANGE_RATE*YTD_CY)) / FACTOR)) end

O que eu precisava seria alguma coisa (comando select) para "FORÇAR" o ZERO em caso de erro, tipo, tenho uma funcionalidade dentro do BO (Business Objects) que é "IfIsError" then 0 (por exemplo), mas eu preciso resolver isso em tempo de query, existe algum comando desse tipo no ORACLE, pensei em uma trigger, mas nao consegui...

 

Alguma sugestão?

 

OBS.: os "VL_UNIT" e "FACTOR", são sempre números inteiros maiores que zero.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.