3

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

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

例如,Sql 原生校验和函数将“表达式”作为参数,它允许您将其调用为:

Select CHECKSUM(*) From dbo.SomeTable

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

4

1 回答 1

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) vs CHARINDEX('o', 'bob')

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

本质上,没有函数名的重载。

于 2013-04-20T19:05:37.283 回答