SQLCLRを使用して大量のストアドプロシージャの設定に取り組んでいます。現在、デバッグモードです。
を使用してデータセットをクライアントに書き戻そうとしています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)実際には6桁の数字であるためSqlDbType.BigInt、SqlMetaDataコンテナとして選択しました。レコードの「CASEID」(record.SetValue(1, caseId))を設定した行で、。を取得し続けInvalidCastExceptionます。
私はこのSQLCLR全体に不慣れですが、System.Int32と互換性があるはずだと私には思えSqlDbType.BigIntます。私は何が欠けていますか?