Задать вопрос
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;
  • Вопрос задан
  • 1764 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    DB-021 Язык Oracle PL/SQL для разработчиков
    1 неделя
    Далее
  • Stepik
    SQL для начинающих: с нуля до сертификата Oracle
    2 недели
    Далее
  • OTUS
    SQL для разработчиков и аналитиков
    3 месяца
    Далее
Решения вопроса 1
idShura
@idShura
n := 22555433 * 100;
Вычисление с двумя значениями PLS_INTEGER, выходящее за пределы диапазона PLS_INTEGER, вызывает исключение переполнения, даже если вы присвоите результат типу данных NUMBER.

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

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

Похожие вопросы
Principal Recruitment Москва
от 200 000 до 250 000 ₽
Principal Recruitment Москва
от 200 000 до 350 000 ₽
Principal Recruitment Москва
от 200 000 до 350 000 ₽