Bagikan melalui


Persyaratan untuk agregat yang ditentukan pengguna CLR

Berlaku untuk:SQL Server

Jenis dalam rakitan runtime bahasa umum (CLR) dapat didaftarkan sebagai fungsi agregat yang ditentukan pengguna, selama mengimplementasikan kontrak agregasi yang diperlukan. Kontrak ini terdiri dari atribut SqlUserDefinedAggregate dan metode kontrak agregasi. Kontrak agregasi mencakup mekanisme untuk menyimpan status perantara agregasi, dan mekanisme untuk mengakumulasi nilai baru, yang terdiri dari empat metode: Init, Accumulate, Merge, dan Terminate. Setelah memenuhi persyaratan ini, Anda dapat memanfaatkan sepenuhnya agregat yang ditentukan pengguna di SQL Server. Artikel ini menyediakan informasi selengkapnya tentang cara membuat dan bekerja dengan agregat yang ditentukan pengguna. Misalnya, lihat Memanggil fungsi agregat yang ditentukan pengguna CLR.

Untuk informasi selengkapnya, lihat SqlUserDefinedAggregateAttribute.

Metode agregasi

Kelas yang terdaftar sebagai agregat yang ditentukan pengguna harus mendukung metode instans berikut. Prosesor kueri menggunakan metode berikut untuk menghitung agregasi.

Metode init

Sintaksis:

public void Init();

Prosesor kueri menggunakan metode ini untuk menginisialisasi komputasi agregasi. Metode ini dipanggil sekali untuk setiap grup yang diagregasi prosesor kueri. Prosesor kueri mungkin memilih untuk menggunakan kembali instans kelas agregat yang sama untuk menghitung agregat beberapa grup. Metode Init harus melakukan pembersihan seperlunya dari penggunaan instans ini sebelumnya, dan memungkinkannya untuk memulai ulang komputasi agregat baru.

Metode akumulasi

Sintaksis:

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

Satu atau beberapa parameter yang mewakili parameter fungsi. input_type harus berupa jenis data SQL Server terkelola yang setara dengan jenis data SQL Server asli yang ditentukan oleh input_sqltype dalam pernyataan CREATE AGGREGATE. Untuk informasi selengkapnya, lihat Memetakan data parameter CLR.

Untuk jenis yang ditentukan pengguna (UDT), jenis input sama dengan jenis UDT. Prosesor kueri menggunakan metode ini untuk mengakumulasi nilai agregat. Ini dipanggil sekali untuk setiap nilai dalam grup yang sedang diagregasi. Prosesor kueri selalu memanggil ini hanya setelah memanggil metode Init pada instans kelas agregat yang diberikan. Implementasi metode ini harus memperbarui status instans untuk mencerminkan akumulasi nilai argumen yang diteruskan.

Metode penggabungan

Sintaksis:

public void Merge(udagg_class value);

Metode ini dapat digunakan untuk menggabungkan instans lain dari kelas agregat ini dengan instans saat ini. Prosesor kueri menggunakan metode ini untuk menggabungkan beberapa komputasi parsial agregasi.

Hentikan metode

Sintaksis:

public return_type Terminate();

Metode ini menyelesaikan komputasi agregat dan mengembalikan hasil agregasi. return_type harus merupakan jenis data SQL Server terkelola yang setara dengan return_sqltype yang ditentukan dalam pernyataan CREATE AGGREGATE. return_type juga dapat menjadi jenis yang ditentukan pengguna.