2017-07-24 27 views
1

我有一個用戶定義類型,幾乎所有的字段都是十進制的,一個是大的int。在sql用戶定義類型中處理異常

但我不知道爲什麼我收到此異常:

算術溢出錯誤轉換爲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 
+0

在第7和12列中,您嘗試插入的數字大於您的字段。 – Rokuto

+0

那我該如何處理?以及它是如何更大的。我已經把(20,10)作爲精確度。 – Sweetie

+2

'5489944.0.29'有2個小數點......(第二個值) –

回答

0

在第7列和12你想發送給插入數字大於你在你的領域定義的集合。如果字段是decimal(20,10)類型,則表示可以在其中存儲小數點左側最多有十位數字和小數點右側最多十位數字的數字。如果你提供更大的數字,然後9999999999(10 9),那麼SQL將拋出異常(如有問題)。

至少有兩個選項。您可以創建帶有「更大」字段的新TYPE(例如decimal(25,10))或刪除此字段然後重新創建它。 (你不能改變TYPEmsdn中的字段)。

Documentationdecimalnumeric數據類型。

相關問題