View Single Post
  #4 (permalink)  
Old 05-06-04, 03:46
Littlefoot Littlefoot is offline
Lost Boy
 
Join Date: Jan 2004
Location: Croatia, Europe
Posts: 3,589
Mathematics essentials: dividing

When dividing two numbers, one should know their names. They are not just number1 and number2 or something like that, but dividendand divisor. Number you get as a result is called a quotient.
Code:
dividend
--------- = quotient
divisor
As you probably know (and, if not, use a calculator), when a divisor equals zero (0), the result (quotient) is indefinite.

You can do something about it, however, using the decode function:
PHP Code:
UPDATE answer SET
  value 
=
  (
SELECT (number_system /
           
DECODE(v_total_no_system01e-99,
                                        
v_total_no_system                     
                 
)
          ) * 
100
   FROM answer
  
)
WHERE question_id 50
Doing so, 1E-99 (which stands for 0.00...001 - a decimal number which has 1 on 99th place behind a decimal sign) is something like 0 and the quotient will be VERY large number (unless dividend is, of course, similar to divisor), but it will not lead you to ORA-01476 error.

I guess answer.value is a NUMBER and will not be able to hold such a huge value. Therefore, substitute 1E-99 with 1E99 and the result will then be not something_large, but 0.

Or, ensure that data used as divisors are not equal to 0 (check constraint or something like that).

Phew!
Reply With Quote