Почему я получаю ошибку арифметического переполнения при преобразовании numeric в тип данных numeric в ADO.NET?

StackOverflow https://stackoverflow.com/questions/1915780

Вопрос

Оригинальный вопрос:

Почему я получаю ошибку арифметического переполнения при преобразовании 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.Убедитесь, что это также определено как Деньги.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top