我有一个奇怪的情况,我有一个通过ADO.Net从C#应用程序中调用的SP,该SP不返回任何数据。它抛出以下异常,但是当我在SSMS中以相同的参数执行SP时,它没有任何问题。
除了用C#代码调用SP之外,没有其他动作。
错误:System.Data.SqlClient.SqlException(0x80131904):类型为int的算术溢出错误,值= 2344000000.000000
在C#代码中,使用ExecuteNonQuery()调用SP,并引发Arithematic溢出异常。
我将其更改为ExecuteScalar(),没有错误,我可以确认问题出在sql server还是ADO.Net上,因为SSMS中的SP执行始终没有任何问题。
由于SP不返回任何数据,因此ADO.NET ExecuteNonQuery将获得受影响的行数作为返回值,并且该数目可能大于Power(2,31),并且可能是Arithematic溢出异常的原因但是我的数据库表中没有超过Power(2,31)行。这只是我的猜测。
答案 0 :(得分:0)
这意味着该值对于int类型而言太大,因此会溢出
有符号整数的最大值是2,147,483,647
所以2344000000将返回此错误