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