Sql CLR函数行作为输入

时间:2012-11-05 22:39:51

标签: sqlclr

我正在尝试创建一个可以在Sql中使用的CLR Hashing函数。

我要做的是计算一行的md5 checksum值。如何定义函数的输入应该是一行?

例如,Sql本机校验和函数将'expression'作为参数,允许您将其称为:

Select CHECKSUM(*) From dbo.SomeTable

我在C#中定义了什么签名,以便可以将*作为参数?

1 个答案:

答案 0 :(得分:3)

不,这在SQLCLR中是不可能的。

SQLCLR接口不允许在几个内部T-SQL函数中找到的一些构造,即:

  1. 传入“*”作为输入参数
     示例:CHECKSUM(*)
     示例:BINARY_CHECKSUM(*)

  2. 相同功能名称的可选输入参数
     示例:CONVERT(DATETIME,'2013-04-20',101)vs CONVERT(DATETIME,'2013-04-20)
     示例:CHARINDEX('o','bob',3)与CHARINDEX('o','bob')

  3. 为相同的函数名称返回不同的数据类型  示例:CONVERT(INT,'12')vs CONVERT(DATETIME,'2013-04-20')
     示例:COALESCE(@IntVariable,12)vs COALESCE(@VarcharVariable,'test')

  4. 基本上,函数名称没有重载。