Agregados definidos por el usuario de CLR: requisitos

Se aplica a:SQL Server

Un tipo de un ensamblado CLR (Common Language Runtime) puede registrarse como una función de agregado definida por el usuario, siempre y cuando implemente el contrato de agregación necesario. Este contrato consta del atributo SqlUserDefinedAggregate y de los métodos de contrato de agregación. El contrato de agregación incluye el mecanismo para guardar el estado intermedio de la agregación y el mecanismo para acumular nuevos valores, que consta de cuatro métodos: Init, Accumulate, Merge y Terminate. Cuando cumpla estos requisitos, podrá aprovechar al máximo los agregados definidos por el usuario en Microsoft SQL Server. En las siguientes secciones de este tema se proporcionan detalles adicionales sobre la forma de crear y trabajar con agregados definidos por el usuario. Para obtener un ejemplo, consulte Invocación de funciones de agregado de CLR User-Defined.

SqlUserDefinedAggregate

Para obtener más información, vea SqlUserDefinedAggregateAttribute.

Métodos de agregación

La clase registrada como un agregado definido por el usuario debe admitir los métodos de instancia siguientes. Estos son los métodos que usa el procesador de consultas para calcular la agregación:

Método Sintaxis Descripción
Init public void Init(); El procesador de consultas usa este método para inicializar el cálculo de la agregación. Este método se invoca una vez para cada grupo que el procesador de consultas agrega. El procesador de consultas puede optar por reutilizar la misma instancia de la clase de agregado para calcular los agregados de varios grupos. El método Init debe realizar cualquier limpieza según sea necesario en los usos anteriores de esta instancia y habilitarlo para volver a iniciar un nuevo cálculo agregado.
Acumular public void Accumulate ( input-type value[, input-type value, ...]); Uno o varios parámetros que representan los parámetros de la función. input_type debe ser el tipo de datos SQL Server administrado equivalente al tipo de datos nativo de SQL Server especificado por input_sqltype en la instrucción CREATE AGGREGATE. Para obtener más información, consulte Asignación de datos de parámetros CLR.

En el caso de los tipos definidos por el usuario (UDT), el tipo de entrada es igual al tipo UDT. El procesador de consultas usa este método para acumular los valores de agregado. Debe invocarse una vez para cada valor en el grupo que se agrega. El procesador de consultas siempre llama a esto solo después de llamar al método Init en la instancia determinada de la clase de agregado. La implementación de este método debe actualizar el estado de la instancia para reflejar la acumulación del valor de argumento que se pasa.
Combinar public void Merge( udagg_class value); Este método puede usarse para combinar otra instancia de esta clase de agregado con la instancia actual. El procesador de consultas usa este método para combinar varios cálculos parciales de una agregación.
Terminate public return_type Terminate(); Este método completa el cálculo de agregado y devuelve el resultado de la agregación. El return_type debe ser un tipo de datos SQL Server administrado que sea el equivalente administrado de return_sqltype especificado en la instrucción CREATE AGGREGATE. El return_type también puede ser un tipo definido por el usuario.

Consulte también

Tipos definidos por el usuario CLR
Invocar funciones de agregado definidas por el usuario de CLR