Задать вопрос
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;
  • Вопрос задан
  • 1759 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Компьютерная академия «TOP»
    Учебная программа “Разработка программного обеспечения”
    30 месяцев
    Далее
  • Специалист.ру
    Oracle Database 19с: Основы SQL
    1 неделя
    Далее
  • Stepik
    SQL для начинающих: с нуля до сертификата Oracle
    2 недели
    Далее
Решения вопроса 1
idShura
@idShura
n := 22555433 * 100;
Вычисление с двумя значениями PLS_INTEGER, выходящее за пределы диапазона PLS_INTEGER, вызывает исключение переполнения, даже если вы присвоите результат типу данных NUMBER.

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

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

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