Megosztás a következőn keresztül:


A CLR felhasználó által definiált összesítéseinek követelményei

A következőkre vonatkozik:SQL Server

A közös nyelvi futtatókörnyezet (CLR) szerelvényének típusa regisztrálható felhasználó által definiált összesítő függvényként, feltéve, hogy megvalósítja a szükséges összesítési szerződést. Ez a szerződés a SqlUserDefinedAggregate attribútumból és az összesítési szerződés módszereiből áll. Az aggregációs szerződés tartalmazza az aggregáció köztes állapotának mentésére szolgáló mechanizmust , valamint az új értékek felhalmozásának mechanizmusát , amely négy módszerből áll : Init, Accumulate, Mergeés Terminate. Miután megfelel ezeknek a követelményeknek, teljes mértékben kihasználhatja a felhasználó által definiált összesítéseket az SQL Serverben. Ez a cikk további információt nyújt a felhasználó által definiált összesítések létrehozásáról és használatáról. Példa: CLR felhasználó által definiált összesítő függvények meghívása.

További információ: SqlUserDefinedAggregateAttribute.

Összesítési módszerek

A felhasználó által definiált összesítésként regisztrált osztálynak támogatnia kell a következő példánymetelyeket. A lekérdezésfeldolgozó az alábbi módszerekkel számítja ki az összesítést.

Init metódus

Szintaxis:

public void Init();

A lekérdezésfeldolgozó ezzel a módszerrel inicializálja az aggregáció számítását. Ezt a metódust a program minden olyan csoport esetében egyszer meghívja, amelyet a lekérdezésfeldolgozó összesítve használ. A lekérdezésfeldolgozó dönthet úgy, hogy az összesítő osztály ugyanazon példányát használja fel több csoport összesítésének kiszámításához. A Init metódusnak szükség szerint el kell végeznie a törlést a példány korábbi használatából, és lehetővé kell tennie, hogy újrainduljon egy új összesített számítás.

Halmozási módszer

Szintaxis:

public void Accumulate(input-type value[, input-type value, ...]);

Egy vagy több paraméter, amely a függvény paramétereit jelöli. input_type az CREATE AGGREGATE utasításban input_sqltype által megadott natív SQL Server-adattípussal egyenértékű felügyelt SQL Server-adattípusnak kell lennie. További információ: CLR-paraméteradatok leképezése.

A felhasználó által definiált típusok (UDT-k) esetében a bemeneti típus megegyezik az UDT-típussal. A lekérdezésfeldolgozó ezzel a módszerrel gyűjti össze az összesített értékeket. Ez az összesítés alatt álló csoport minden egyes értékéhez egyszer lesz meghívva. Ezt a lekérdezésfeldolgozó mindig csak akkor hívja meg, ha meghívja a Init metódust az összesített osztály adott példányán. A metódus végrehajtásának frissítenie kell a példány állapotát, hogy tükrözze az átadott argumentumérték halmozódását.

Egyesítési módszer

Szintaxis:

public void Merge(udagg_class value);

Ezzel a módszerrel egyesíthető az összesítő osztály egy másik példánya az aktuális példánysal. A lekérdezésfeldolgozó ezzel a módszerrel egyesít egy összesítés több részleges számítását.

Leállítási módszer

Szintaxis:

public return_type Terminate();

Ez a metódus befejezi az összesített számítást, és visszaadja az összesítés eredményét. A return_type felügyelt SQL Server-adattípusnak kell lennie, amely a CREATE AGGREGATE utasításban megadott return_sqltype felügyelt megfelelője. A return_type felhasználó által definiált típus is lehet.