我正在使用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