Почему я получаю ошибку арифметического переполнения при преобразовании numeric в тип данных numeric в ADO.NET?
-
20-09-2019 - |
Вопрос
Оригинальный вопрос:
Почему я получаю ошибку арифметического переполнения при преобразовании numeric в тип данных numeric в ADO.NET код, использующий тип данных Money, когда сумма превышает 999 999,99 долларов?
Именно так, как сказано в вопросе...У меня есть немного ADO.net кода на уровне доступа к данным, который взаимодействует с базой данных Sql Server 2008.В таблице есть столбец Суммы, который имеет тип данных "Деньги".Код отлично работает при вставке записи с суммой < 1 000 000 долларов, но выдает эту ошибку, когда сумма >= 1 000 000 долларов:
"Ошибка арифметического переполнения при преобразовании числового типа в тип данных numeric"
Я могу вручную запустить t-sql для базы данных, обновляя сумму до значения, превышающего 1 000 000 долларов, чтобы база данных могла исключить сумму штрафа...что такого в следующей SqlCommand, которая вызывает ошибку?
MyCommand.Parameters.Add(New SqlParameter("@Amount", SqlDbType.Money))
If IsNothing(Amount) Then
MyCommand.Parameters("@Amount").Value = Convert.DBNull
Else
MyCommand.Parameters("@Amount").Value = Amount
End If
Решение
Если возникает ошибка при вызове хранимой процедуры со значением, но при непосредственном обновлении таблицы этим же значением ошибки не возникает, то это приостанавливает действие типа данных параметра @Amount.Убедитесь, что это также определено как Деньги.