我正在尝试创建一个函数,该函数将expression作为参数,与BINARY_CHECKSUM一样。具体来说,我希望我的参数是1到N列名称的列表。当我在SQL Server Management Studio的对象资源管理器中查看BINARY_CHECKSUM(或MAX或CHECKSUM)的定义时,参数被定义为'Expression(any type)' - 用户定义的函数可以模拟这个吗?我知道我可以使用参数作为逗号名称的分隔列表,但我对'表达式(任何类型)'感到好奇。
答案 0 :(得分:0)
你可以这样试试:
declare @cmd varchar(max)
declare @columns varchar(max), @table_name sysname
set @table_name = 'sys.objects'
set @columns = '*'
set @cmd = 'select top 1 binary_checksum('+@columns+') as column_name from '+@table_name
print @cmd
exec (@cmd)
答案 1 :(得分:0)
如果要在SQL Server 2005或更高版本中编写自己的聚合函数(如BINARY_CHECKSUM
,COUNT
等),则必须使用CLR。请参阅MSDN上的以下内容:
How to: Create and Run a CLR SQL Server Aggregate
CREATE AGGREGATE