Задать вопрос
zencd
@zencd

Почему умножение на константу вызывает переполнение в PL/SQL?

Вот три, казалось бы, одинаковых выражения, но на последней Oracle 12c PL/SQL падает с ошибкой "ORA-01426: numeric overflow. Evaluation of an value expression causes an overflow/underflow". Почему так?

declare
    n number(38,0);
    mul number(38,0) := 100;
begin
    n := 2255543300; -- ok
    n := 22555433 * mul; -- ok
    n := 22555433 * 100; -- numeric overflow
end;
  • Вопрос задан
  • 1577 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
idShura
@idShura
n := 22555433 * 100;
Вычисление с двумя значениями PLS_INTEGER, выходящее за пределы диапазона PLS_INTEGER, вызывает исключение переполнения, даже если вы присвоите результат типу данных NUMBER.

Вот тут Tom Kyte подробно разбирает этот вопрос.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы