Ошибка арифметического переполнения при преобразовании типа int в числовой тип данных - PullRequest
0 голосов
/ 22 апреля 2011

Как я могу исправить эту ошибку в T-SQL?Следующая строка успешно выполняется:

SET @dPERCENT_QC_COMPLETED = CASE WHEN @NUM_QC_RECEIVED = 0 
                               THEN 0 
                               ELSE @NUM_QC_COMPLETED / @NUM_QC_RECEIVED 
                             END

Но эта строка завершается ошибкой с кодом ошибки ниже:

SET @dPERCENT_QC_COMPLETED = CASE WHEN @NUM_QC_RECEIVED = 0
                               THEN 0
                               ELSE (100 * @NUM_QC_COMPLETED / @NUM_QC_RECEIVED)
                             END

Сообщение 8115, Уровень 16, Состояние 8, Строка 73 Ошибка преобразования арифметического переполнения втип данных числовой.

@ dPERCENT_QC_COMPLETED - десятичное число (2).Другие переменные являются целыми числами.Проблема, я думаю, состоит в том, что в настоящее время эти другие целочисленные значения = 1, поэтому это выражение оценивается в 1.

1 Ответ

1 голос
/ 22 апреля 2011

decimal(2) никогда не сможет справиться с 100 процентами завершения.Почему вы используете этот тип данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...