指定的列精度大于38的最大精度

时间:2012-06-28 09:37:04

标签: sql sql-server sql-server-2008 stored-procedures

我在SQL Server 2008中创建了一个新的SP(存储过程),它会给我一个错误,即

Specified column precision 52 is greater than the maximum precision of 38

我无法理解为什么会出现这种错误?

请让我解释为什么会出现此错误,以及如何解决此错误。

3 个答案:

答案 0 :(得分:2)

系统告诉你错误发生的原因。

您询问的精度为52,但最大默认精度仅为38.因此系统无法提供您所要求的精度。

请参阅:http://msdn.microsoft.com/en-us/library/ms190476.aspx

“在SQL Server中,数字和十进制数据类型的默认最大精度为38.在早期版本的SQL Server中,默认最大值为28。”

答案 1 :(得分:0)

我弄错了,这真是一个愚蠢的错误,我错误地产生了这个错误。我声明了一个参数,其数据类型是十进制的,并且错误地是工具十进制的长度为52.所以它给出了一个错误,因为十进制最大长度为id。

答案 2 :(得分:0)

您试图放置一个比表中存储的精度更高的变量。

检查表结构或语句/过程。

对于正在使用休眠模式寻找类似问题的其他解决方案的人,请检查您的映射文件。

就我而言,我将休眠映射文件(*.hbm.xml)中的精度更改为38。