Требования к определяемым пользователем агрегатам среды CLR
Область применения:SQL Server
Тип в сборке CLR можно зарегистрировать как определяемую пользователем агрегатную функцию, если он реализует необходимую статистическую обработку. Этот контракт состоит из атрибута SqlUserDefinedAggregate
и методов контракта агрегирования. Контракт агрегирования включает механизм сохранения промежуточного состояния агрегата и механизма для накапливания новых значений, состоящих из четырех методов: Init
, Accumulate
, Merge
и Terminate
. После выполнения этих требований вы можете воспользоваться всеми преимуществами определяемых пользователем агрегатов в SQL Server. В этой статье содержатся дополнительные сведения о создании и работе с определяемыми пользователем агрегатами. Пример см. в разделе Invoke CLR, определяемые пользователем агрегатными функциями.
Дополнительные сведения см. в статье SqlUserDefinedAggregateAttribute.
Методы агрегирования
Класс, зарегистрированный как определяемая пользователем статистическая функция, должен поддерживать следующие методы экземпляра. Обработчик запросов использует следующие методы для вычисления агрегата.
Метод Init
Синтаксис:
public void Init();
Обработчик запросов использует данный метод для инициализации вычисления статистической обработки. Этот метод вызывается один раз для каждой группы, которую обработчик запросов подвергает статистической обработке. Обработчик запросов может повторно использовать один и тот же экземпляр агрегатного класса для вычислений агрегатных агрегатов нескольких групп. Метод Init
должен выполнять любую очистку по мере необходимости из предыдущего использования этого экземпляра и позволить ему перезапустить новое статистическое вычисление.
Метод Аккумулирования
Синтаксис:
public void Accumulate(input-type value[, input-type value, ...]);
Один или несколько параметров, представляющих аргументы функции.
input_type должен быть управляемым типом данных SQL Server, эквивалентным собственному типу данных SQL Server, указанному input_sqltype в инструкции CREATE AGGREGATE
. Дополнительные сведения см. в данных параметров CLR.
Для определяемых пользователем типов входной тип аналогичен определяемому пользователем типу. Обработчик запросов использует этот метод для накопления статистических значений. Метод вызывается один раз для каждого значения группы, в которой выполняется статистическая обработка. Обработчик запросов всегда вызывает это только после вызова метода Init
в данном экземпляре агрегатного класса. Реализация данного метода должна обновить состояние экземпляра, чтобы отразить накопление передаваемого значения аргумента.
Метод слияния
Синтаксис:
public void Merge(udagg_class value);
Метод используется для слияния еще одного экземпляра этого статистического класса с текущим экземпляром. Обработчик запросов использует этот метод для слияния нескольких частичных вычислений статистической обработки.
Метод "Завершить"
Синтаксис:
public return_type Terminate();
Этот метод завершает статистическое вычисление и возвращает результат статистической обработки.
return_type должен быть управляемым типом данных SQL Server, который является управляемым эквивалентом return_sqltype, указанным в инструкции CREATE AGGREGATE
. Return_type также может быть определяемым пользователем типом.