1

原始问题:

当金额大于 $999,999,99 时,为什么在 ADO.NET 代码中使用 Money 数据类型将数字转换为数据类型数字时出现算术溢出错误?


正如问题所说...我在与 Sql Server 2008 数据库对话的数据访问层中有一些 ADO.net 代码。表中有一个数据类型为“Money”的 Amount 列。该代码在插入金额 < 1,000,000 美元的记录时工作正常,但在金额 >= 1,000,000 美元时抛出此错误:

“将数字转换为数据类型数字的算术溢出错误”

我可以手动对数据库运行 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
4

1 回答 1

1

如果使用值调用存储过程时发生错误,但在使用相同值直接更新表时没有发生错误,那么就会对@Amount 参数的数据类型产生怀疑。确保它也被定义为 Money。

于 2009-12-16T16:32:31.357 回答