Agrégats CLR définis par l’utilisateur - Exigences
S’applique à :SQL Server
Un type dans un assembly CLR (Common Language Runtime) peut être enregistré comme une fonction d'agrégation définie par l'utilisateur, tant qu'il implémente le contrat d'agrégation requis. Ce contrat se compose de l’attribut SqlUserDefinedAggregate et des méthodes de contrat d’agrégation. Le contrat d’agrégation inclut le mécanisme permettant d’enregistrer l’état intermédiaire de l’agrégation et le mécanisme permettant d’accumuler de nouvelles valeurs, qui se compose de quatre méthodes : Init, Cumul, Merge et Terminate. Une fois ces conditions remplies, vous pouvez tirer pleinement parti des agrégats définis par l’utilisateur dans Microsoft SQL Server. Les sections suivantes de cette rubrique fournissent des détails supplémentaires sur la façon de créer et d'utiliser les agrégats définis par l'utilisateur. Pour obtenir un exemple, consultez Appel du CLR User-Defined fonctions d’agrégation.
SqlUserDefinedAggregate
Pour plus d’informations, consultez SqlUserDefinedAggregateAttribute.
Méthodes d'agrégation
La classe inscrite comme agrégat défini par l'utilisateur doit prendre en charge les méthodes d'instance suivantes. Ce sont les méthodes que le processeur de requêtes utilise pour calculer l'agrégation :
Méthode | Syntaxe | Description |
---|---|---|
Init | public void Init(); |
Le processeur de requêtes utilise cette méthode pour initialiser le calcul de l'agrégation. Cette méthode est appelée une fois pour chaque groupe dont le processeur de requêtes effectue l'agrégation. Le processeur de requêtes peut choisir de réutiliser la même instance de la classe d'agrégation pour calculer des agrégats de plusieurs groupes. La méthode Init doit effectuer toute propre si nécessaire à partir des utilisations précédentes de cette instance, et lui permettre de redémarrer un nouveau calcul d’agrégation. |
Accumuler | public void Accumulate ( input-type value[, input-type value, ...]); |
Un ou plusieurs paramètres représentant les paramètres de la fonction. input_type doit être le type de données managé SQL Server équivalent au type de données SQL Server natif spécifié par input_sqltype dans l’instructionCREATE AGGREGATE. Pour plus d’informations, consultez Mappage des données de paramètre CLR. Pour les types définis par l'utilisateur (UDT), le type d'entrée est le même que le type UDT. Le processeur de requêtes utilise cette méthode pour accumuler les valeurs d'agrégation. La méthode est appelée une fois pour chaque valeur dans le groupe qui fait l'objet de l'agrégation. Le processeur de requêtes l’appelle toujours uniquement après avoir appelé la méthode Init sur le instance donné de la classe d’agrégation. L'implémentation de cette méthode doit mettre à jour l'état de l'instance pour refléter l'accumulation de la valeur d'argument qui est passée. |
Fusionner | public void Merge( udagg_class value); |
Cette méthode peut être utilisée pour fusionner une autre instance de cette classe d'agrégation avec l'instance actuelle. Le processeur de requêtes utilise cette méthode pour fusionner plusieurs calculs partiels d'une agrégation. |
Terminer. | public return_type Terminate(); |
Cette méthode termine le calcul d'agrégation et retourne le résultat de l'agrégation. Le return_type doit être un type de données managé SQL Server qui est l’équivalent managé de return_sqltype spécifié dans l’instruction CREATE AGGREGATE. Le return_type peut également être un type défini par l’utilisateur. |
Voir aussi
Types CLR définis par l’utilisateur
Appel de fonctions d'agrégation CLR définies par l'utilisateur
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour