【发布时间】:2017-07-24 11:01:03
【问题描述】:
我有一个用户定义的类型,它几乎所有的字段都是十进制的,一个是大整数。
但我不知道为什么会出现此异常:
将 nvarchar 转换为数字数据类型时出现算术溢出错误。
表值参数“@DataTable”的数据不 符合参数的表类型。
声明已终止。
我没有将任何 nvarchar 值传递给该类型。 这是类型的定义:
CREATE TYPE [dbo].[DataTable] AS TABLE(
[Id] [bigint] NOT NULL,
[Total1] [decimal](20, 10) NULL,
[Total2] [decimal](20, 10) NULL,
[Total3] [decimal](20, 10) NULL,
[Total4] [decimal](20, 10) NULL,
[Total5] [decimal](20, 10) NULL,
[Total6] [decimal](20, 10) NULL,
[Total7] [decimal](20, 10) NULL,
[Total8] [decimal](20, 10) NULL,
[Total9] [decimal](20, 10) NULL,
[Total10] [decimal](20, 10) NULL,
[Total11] [decimal](20, 10) NULL,
[Total12] [decimal](20, 10) NULL,
[Total13] [decimal](20, 10) NULL,
[Total14] [decimal](20, 10) NULL,
[Total15] [decimal](20, 10) NULL,
[Total16] [int] NULL,
)
这是从 c# 发送的集合
[0]= 12869
[1]= 54899440.29
[2] = 0
[3] = 0
[4] = 0
[5] = 54899440.29
[6] = 0
[7] = 82000000000.00
[8] = 54899440.29
[9] = 54899440.29
[10] = 0
[11] = 0
[12]= -81945100559.71
[13] = 0.0
[14] = 0
[15] = 2013
【问题讨论】:
-
在第 7 列和第 12 列中,您尝试插入大于您的字段的数字。
-
那我该如何处理呢?以及它如何更大。我已经将 (20,10) 作为精度。
-
5489944.0.29有 2 个小数点...(第二个值) -
那是错误的。类型错误
-
好吧,你可以(甚至你必须)将你的列扩展到例如
decimal(25,10)。 There 是关于小数的文档。
标签: sql sql-server-2008 sql-server-2008-r2