我正在使用SQL CLR設置一大組存儲過程。我目前處於調試模式。SQL Server CLR - SqlDataRecord.SetValue InvalidCastException
我想寫一個數據集回到客戶端使用SqlPipe
。
這裏是我的代碼:
Dim metaData() As SqlMetaData = {New SqlMetaData("USERNAME", SqlDbType.VarChar, -1), _
New SqlMetaData("CASEID", SqlDbType.BigInt), _
New SqlMetaData("Reason", SqlDbType.VarChar, -1)}
Dim record As New SqlDataRecord(metaData)
Dim pipe As SqlPipe = SqlContext.Pipe
pipe.SendResultsStart(record)
Dim username = iDataRow.Item("USERNAME")
Dim caseId = Convert.ToInt32(identifier.CASEID)
Dim message = "Message"
record.SetValue(0, username)
record.SetValue(1, caseId)
record.SetValue(2, message)
pipe.SendResultsRow(record)
pipe.SendResultsEnd()
identifier.CASEID
是存儲在數據庫中爲numeric(21)
值,但它實際上是一個六位數字,這就是爲什麼我選擇SqlDbType.BigInt
爲SqlMetaData
容器。在我設置記錄的「CASEID」(record.SetValue(1, caseId)
)的行中,我不斷收到InvalidCastException
。
我是新來的這整個SQL CLR的事情,但在我看來,System.Int32
應該與SqlDbType.BigInt
兼容。我錯過了什麼?
MSDN信息顯示,SqlDataRecord.SetValue只拋出ArgumentOutOfRangeException – volody
好一點......再運行現在去看看,如果我能得到更多的來自我的調試環境的信息...謝謝! – mbm29414
我得到了同樣的錯誤: 錯誤類型:'System.InvalidCastException' 消息:'指定的轉換是無效的.' TargetSite:'{Void SetValue(Int32,System.Object)}' 任何幫助非常感謝! – mbm29414