3

我要問這個,因爲它令我煩惱,我無法找到這個問題的具體來源。我知道如何在Sql Server中使用TVP(表值參數),我在存儲過程中使用它進行批量插入。所以基本上我在SQL創建表類型的表的相應列/字段我要插入記錄和它工作正常,我從代碼(C#),以SQL存儲過程,現在這裏是我的問題:最近,當用戶嘗試插入多條記錄,也有在表中的參數某些隨機域當它試圖執行存儲過程(基本上在C#中,因爲它會拋出一些錯誤),讓這種錯誤的消息。SQL Server Table Valued Parameter列不受支持。該類型是「對象」

列的類型 '{字段}' 不被支持。 'Object'的類型是

在每一次出現的錯誤信息中的字段都會改變,所以我知道問題出在數據中,但我不知道它是什麼。順便說一句,這是我如何從我的源數據傳輸到將用作插入參數數據表:

dr["{field_name}"] = {value} 

更新:我想更詳細地說明我如何轉院值的數據表。基本上,我將通過

table.Rows.Cast<DataRow>().ToList().ForEach(action => {statements}) 

通過在數據表中的所有行嘗試環路,則在foreach裏面,我給你

action["{field_name}"] = action["{field_name}"].{formatting_function} 

我需要這個格式化的數據被插入到前數據庫,例如。轉換爲大寫或小寫或轉換爲特定類型,例如。布爾值。

+0

這聽起來像您的{}值之間的鑄造問題和{} FIELD_NAME的類型。 – 2015-07-23 13:22:12

+0

那些特定的隨機場是什麼類型?這聽起來對我來說也是一個鑄造問題。在將它們傳遞給DataRow項目之前,您是否嘗試將值轉換爲對象類型? – Engin 2015-07-29 18:15:10

回答

1

你逝去的參數表不是「列兼容」與期望的表值參數。

您的表值參數的類型(「對象」)要傳遞的列(「{}場」)是不是與相應列的類型兼容。

當你構建你的表值,確保所有列類型與預期參數兼容。

更多,請參閱: Table-Valued Parameters

1

使用ToUpper(),ToLower()等格式函數在{value}上看起來錯誤。

這些函數預計類型爲string,但{value}的類型爲Object

因此使用ToString()象下面這樣:

{value}.ToString().ToLower(). 
相關問題