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_system, 0, 1e-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!