Поделиться через


Требования для определяемых пользователем агрегатных функций среды CLR

Область применения: SQL Server

Тип в сборке CLR можно зарегистрировать как определяемую пользователем агрегатную функцию, если он реализует необходимую статистическую обработку. Этот контракт состоит из атрибута SqlUserDefinedAggregate и методов контракта агрегирования. Контракт агрегирования включает механизм сохранения промежуточного состояния агрегата и механизма для накапливания новых значений, состоящих из четырех методов: Init, Accumulate, Merge и Terminate. Когда вы выполнили эти требования, вы сможете воспользоваться всеми преимуществами определяемых пользователем агрегатов в Microsoft SQL Server. В следующих подразделах этого раздела содержатся подробные сведения о создании определяемых пользователем статистических функций и работе с ними. Пример см. в разделе "Вызов пользовательских агрегатных функций CLR".

SqlUserDefinedAggregate

Дополнительные сведения см. в статье SqlUserDefinedAggregateAttribute.

Методы статистической обработки

Класс, зарегистрированный как определяемая пользователем статистическая функция, должен поддерживать следующие методы экземпляра. Это методы, которые использует обработчик запросов для выполнения статистической обработки.

Способ Синтаксис Description
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 также может быть определяемым пользователем типом.

См. также

Определяемые пользователем типы CLR
Вызов определяемых пользователем агрегатных функций CLR