Agregações do CLR definidas pelo usuário – Requisitos
Aplica-se a:SQL Server
Um tipo em um assembly do CLR pode ser registrado como uma função de agregação definida pelo usuário, desde que implemente o contrato de agregação necessário. Esse contrato consiste no atributo SqlUserDefinedAggregate e nos métodos de contrato de agregação. O contrato de agregação inclui o mecanismo para salvar o estado intermediário da agregação e o mecanismo para acumular novos valores, que consistem em quatro métodos: Init, Accumulate, Merge e Terminate. Quando atender a esses requisitos, você poderá aproveitar ao máximo as agregações definidas pelo usuário no Microsoft SQL Server. As seguintes seções deste tópico fornecem detalhes adicionais sobre como criar e trabalhar com agregações definidas pelo usuário. Para obter um exemplo, consulte Invocando funções de agregação User-Defined CLR.
SqlUserDefinedAggregate
Para obter mais informações, consulte SqlUserDefinedAggregateAttribute.
Métodos de agregação
A classe registrada como uma agregação definida pelo usuário deve dar suporte aos seguintes métodos de instância. Eles são os métodos que o processador de consultas usa para computar a agregação:
Método | Sintaxe | Descrição |
---|---|---|
Init | public void Init(); |
O processador de consultas usa esse método para inicializar a computação da agregação. Ele é invocado uma vez para cada grupo que o processador de consultas está agregando. O processador de consultas pode optar por reutilizar a mesma instância da classe de agregação para computar agregações de grupos vários. O método Init deve executar qualquer limpo conforme necessário dos usos anteriores dessa instância e permitir que ele reinicie uma nova computação agregada. |
Accumulate | public void Accumulate ( input-type value[, input-type value, ...]); |
Um ou mais parâmetros que representam os parâmetros da função. input_type deve ser o tipo de dados SQL Server gerenciado equivalente ao tipo de dados SQL Server nativo especificado por input_sqltype na instrução CREATE AGGREGATE. Para obter mais informações, consulte Mapeamento de dados de parâmetro CLR. Para UDTs (tipos definidos pelo usuário), o tipo de entrada é o mesmo que o tipo do UDT. O processador de consultas usa esse método para acumular os valores de agregação. Ele é invocado uma vez para obter cada valor no grupo que está sendo agregado. O processador de consultas sempre chama isso somente depois de chamar o método Init na instância especificada da classe de agregação. A implementação desse método deve atualizar o estado da instância para refletir o acúmulo do valor do argumento que é passado. |
Mesclagem | public void Merge( udagg_class value); |
Esse método pode ser usado para mesclar outra instância desta classe de agregação com a instância atual. O processador de consultas usa esse método para mesclar várias computações parciais de uma agregação. |
Encerrar | public return_type Terminate(); |
Esse método completa a computação de agregações e retorna o resultado da agregação. O return_type deve ser um tipo de dados SQL Server gerenciado que seja o equivalente gerenciado de return_sqltype especificado na instrução CREATE AGGREGATE. O return_type também pode ser um tipo definido pelo usuário. |
Consulte Também
Tipos definidos pelo usuário de CLR
Invocando funções de agregação CLR definidas pelo usuário
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de