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;
  • Вопрос задан
  • 1326 просмотров
Решения вопроса 1
idShura
@idShura
n := 22555433 * 100;
Вычисление с двумя значениями PLS_INTEGER, выходящее за пределы диапазона PLS_INTEGER, вызывает исключение переполнения, даже если вы присвоите результат типу данных NUMBER.

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

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

Войти через центр авторизации
Похожие вопросы