Типы данных параметров «Выражение» для пользовательских функций - PullRequest
2 голосов
/ 05 октября 2011

Я пытаюсь создать функцию, которая принимает в качестве параметра выражение , как то, что используется с BINARY_CHECKSUM .В частности, я хочу, чтобы мой параметр был списком от 1 до N имен столбцов.Когда я смотрю на определение BINARY_CHECKSUM (или MAX или CHECKSUM в этом отношении) в Обозревателе объектов в SQL Server Management Studio, параметр определяется как «Выражение (любой тип)» - может ли пользовательская функция эмулировать это?Я знаю, что могу использовать параметр с разделенным списком имен запятых, но мне любопытно, что такое «выражение (любой тип)».

Ответы [ 2 ]

0 голосов
/ 06 января 2012

Если вы хотите написать свои собственные агрегатные функции (например, BINARY_CHECKSUM, COUNT и т. Д.) В SQL Server 2005 или более поздней версии, вам придется использовать CLR. Смотрите следующее на MSDN:

Как создать и запустить агрегат SQL Server CLR
СОЗДАТЬ АГРЕГАТ

0 голосов
/ 05 октября 2011

Вы можете попробовать это так:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...