Строка функции Sql CLR в качестве входных данных

Я пытаюсь создать функцию хеширования CLR, которую я могу использовать в Sql.

Что я хочу сделать, так это вычислить значение md5 checksum строки. Как определить, что входные данные функции должны быть строкой?

Например, собственная функция контрольной суммы Sql принимает «выражение» в качестве параметра, что позволяет вам вызывать его как:

Select CHECKSUM(*) From dbo.SomeTable

Какую подпись я определяю в С#, чтобы она могла принимать * в качестве параметра?


person Fragilerus    schedule 05.11.2012    source источник
comment
ты разобрался? Является ли это возможным?   -  person mishkin    schedule 14.03.2013
comment
@mishkin: нет, это невозможно. Я добавил ответ с дополнительной информацией.   -  person Solomon Rutzky    schedule 20.04.2013


Ответы (1)


Нет, это невозможно в SQLCLR.

Интерфейс SQLCLR не поддерживает некоторые конструкции, которые можно найти в некоторых внутренних функциях T-SQL, а именно:

  1. Передача "*" в качестве входного параметра
    ПРИМЕР: КОНТРОЛЬНАЯ СУММА(*)
    ПРИМЕР: BINARY_CHECKSUM(*)

  2. Необязательные входные параметры для одного и того же имени функции
    ПРИМЕР: CONVERT(DATETIME, '2013-04-20', 101) vs CONVERT(DATETIME, '2013-04-20)
    ПРИМЕР: CHARINDEX('o', 'боб', 3) vs CHARINDEX('o', 'боб')

  3. Возврат разных типов данных для одного и того же имени функции
    ПРИМЕР: CONVERT(INT, '12') vs CONVERT(DATETIME, '2013-04-20')
    ПРИМЕР: COALESCE(@IntVariable, 12) vs COALESCE(@ VarcharVariable, 'тест')

По существу, нет перегрузки имен функций.

person Solomon Rutzky    schedule 20.04.2013
comment
Спасибо. Это расстраивает, так как это устраняет большую часть полезности clr udfs. - person Fragilerus; 21.04.2013