Share via


CLR 使用者定義彙總 - 需求

適用於:SQL Server

在 Common Language Runtime (CLR) 組件中的類型只要實作需要的彙總合約,就可以註冊為使用者定義彙總函式。 此合約包含 SqlUserDefinedAggregate 屬性和匯總合約方法。 匯總合約包含儲存匯總中繼狀態的機制,以及累積新值的機制,其中包含四種方法: InitAccumulateMergeTerminate。 當您符合這些需求時,您將能夠充分利用 Microsoft SQL Server 中的使用者定義匯總。 本主題的下列章節提供關於如何建立和使用使用者定義彙總的其他相關資訊。 如需範例,請參閱 叫用 CLR User-Defined彙總函式

SqlUserDefinedAggregate

如需詳細資訊,請參閱 SqlUserDefinedAggregateAttribute

彙總方法

註冊為使用者定義彙總的類別應該會支援下列執行個體方法。 查詢處理器用以計算彙總的方法:

方法 語法 描述
Init public void Init(); 查詢處理器使用這個方法將彙總計算初始化。 這個方法針對查詢處理器正在彙總的每個群組叫用一次。 查詢處理器為了計算多個群組彙總,可能選擇重複使用彙總類別之相同執行個體。 Init方法應該視需要執行先前使用此實例的任何清除,並讓它重新開機新的匯總計算。
累積 public void Accumulate ( input-type value[, input-type value, ...]); 代表函數參數的一個或多個參數。 input_type應該是 managed SQL Server 資料類型,相當於CREATE AGGREGATE語句中input_sqltype所指定的原生SQL Server資料類型。 如需詳細資訊,請參閱 對應 CLR 參數資料

如果是使用者定義型別 (UDT),輸入類型則是 UDT 類型。 查詢處理器使用這個方法來累積彙總值。 在群組中正在彙總的每一個值都會叫用一次。 查詢處理器一律只會在匯總類別的指定實例上呼叫 Init 方法之後,才會呼叫這個 。 這個方法的實作應該會更新執行個體的狀態,以反映傳入的引數值之累積狀況。
合併式 public void Merge( udagg_class value); 這個方法可用於將此彙總類別的其他執行個體與目前的執行個體合併。 查詢處理器使用這個方法合併多個不完全的彙總計算。
終止 public return_type Terminate(); 這個方法會完成彙總計算,並傳回彙總的結果。 return_type應該是 Managed SQL Server 資料類型,其相當於CREATE AGGREGATE語句中指定的return_sqltypereturn_type也可以是使用者定義的類型。

另請參閱

CLR 使用者定義類型
叫用 CLR 使用者定義彙總函式