我正在使用 SQL CLR 设置大量存储过程。我目前处于调试模式。
我正在尝试使用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
是一个存储在数据库中的值 a numeric(21)
,但它实际上是一个六位数的数字,这就是我选择SqlDbType.BigInt
作为SqlMetaData
容器的原因。在我设置记录的“CASEID”(record.SetValue(1, caseId)
)的那一行,我不断得到一个InvalidCastException
.
我是整个 SQL CLR 的新手,但在我看来 aSystem.Int32
应该与SqlDbType.BigInt
. 我错过了什么?