Так просто чтобы дать вам пример того, как наша процедура будет в конечном счете работать с данными и прийти с этой ошибкой, вот некоторые SQL:Ошибка арифметического переполнения в SQL
DECLARE @daysInPeriod INT
DECLARE @dcFraction DECIMAL(38,38)
DECLARE @YEAR_360 DECIMAL
SET @YEAR_360 = 360.0000000000
SET @daysInPeriod = DATEDIFF(dd, '12/24/1970', '6/29/07')
SET @dcFraction = @daysInPeriod/@YEAR_360
Если вы запустите в SQL Server 2008 R2, вы увидите, что вы получили сообщение об ошибке 'Arithmetic overflow error converting numeric to data type numeric.'
.
decimal
, что я устанавливаю значение max'd out с точки зрения мест, которые он может удерживать, что я считаю 38. Я не знаю, что еще я могу сделать, чтобы получить это значение. Разве вы не можете разделить integer
на decimal
в SQL и получить что-то из него, особенно если decimal
является max'd?
Ого, я, вероятно, следует из посмотрел десятичную декларацию первыми. Это уже было в коде, поэтому я неправильно предположил, что он был написан правильно в первый раз. Благодаря! – slandau
@slandau Да, вы, вероятно, должны, но все это происходит со всеми нами, когда мы работаем с другим кодом людей на незнакомом языке, мы предполагаем, что другой парень знал, что он делает. –