我正在尝试创建一个可以在Sql中使用的CLR Hashing函数。
我要做的是计算一行的md5 checksum
值。如何定义函数的输入应该是一行?
例如,Sql本机校验和函数将'expression'作为参数,允许您将其称为:
Select CHECKSUM(*) From dbo.SomeTable
我在C#中定义了什么签名,以便可以将*
作为参数?
答案 0 :(得分:3)
不,这在SQLCLR中是不可能的。
SQLCLR接口不允许在几个内部T-SQL函数中找到的一些构造,即:
传入“*”作为输入参数
示例:CHECKSUM(*)
示例:BINARY_CHECKSUM(*)
相同功能名称的可选输入参数
示例:CONVERT(DATETIME,'2013-04-20',101)vs CONVERT(DATETIME,'2013-04-20)
示例:CHARINDEX('o','bob',3)与CHARINDEX('o','bob')
为相同的函数名称返回不同的数据类型
示例:CONVERT(INT,'12')vs CONVERT(DATETIME,'2013-04-20')
示例:COALESCE(@IntVariable,12)vs COALESCE(@VarcharVariable,'test')
基本上,函数名称没有重载。