Bagikan melalui


Persyaratan untuk Agregat yang Ditentukan Pengguna CLR

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, , AccumulateMerge, dan Terminate. Ketika Anda telah memenuhi persyaratan ini, Anda akan dapat memanfaatkan sepenuhnya agregat yang ditentukan pengguna di Microsoft SQL Server. Bagian berikut dari topik ini memberikan detail tambahan tentang cara membuat dan bekerja dengan agregat yang ditentukan pengguna. Misalnya, lihat Memanggil CLR User-Defined Fungsi Agregat.

SqlUserDefinedAggregate

Untuk informasi selengkapnya, lihat SqlUserDefinedAggregateAttribute.

Metode Agregasi

Kelas yang terdaftar sebagai agregat yang ditentukan pengguna harus mendukung metode instans berikut. Ini adalah metode yang digunakan prosesor kueri untuk menghitung agregasi:

Metode Sintaksis Deskripsi
Init void publik Init(); Prosesor kueri menggunakan metode ini untuk menginisialisasi komputasi agregasi. Metode ini dipanggil sekali untuk setiap grup yang diagregasi prosesor kueri. Prosesor kueri dapat 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 kembali komputasi agregat baru.
Accumulate akumulasi kekosongan publik ( nilai jenis input[, nilai jenis input, ...]); 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.
Merge penggabungan kekosongan publik(nilai udagg_class); 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.
Terminate penghentian return_type publik(); 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.

Parameter dengan Nilai Tabel

Parameter bernilai tabel (TVP), jenis tabel yang ditentukan pengguna yang diteruskan ke prosedur atau fungsi, menyediakan cara yang efisien untuk meneruskan beberapa baris data ke server. TVP menyediakan fungsionalitas serupa dengan array parameter, tetapi menawarkan fleksibilitas yang lebih besar dan integrasi yang lebih dekat dengan Transact-SQL. Mereka juga memberikan potensi performa yang lebih baik. TVP juga membantu mengurangi jumlah perjalanan pulang pergi ke server. Alih-alih mengirim beberapa permintaan ke server, seperti dengan daftar parameter skalar, data dapat dikirim ke server sebagai TVP. Jenis tabel yang ditentukan pengguna tidak dapat diteruskan sebagai parameter bernilai tabel ke, atau dikembalikan dari, prosedur tersimpan terkelola atau fungsi yang dijalankan dalam proses SQL Server. Selain itu, TVP tidak dapat digunakan dalam cakupan koneksi konteks. Namun, TVP dapat digunakan dengan SqlClient dalam prosedur atau fungsi tersimpan terkelola yang dijalankan dalam proses SQL Server, jika digunakan dalam koneksi yang bukan koneksi konteks. Koneksi bisa ke server yang sama yang menjalankan prosedur atau fungsi terkelola. Untuk informasi selengkapnya tentang TVP, lihat Menggunakan Parameter Table-Valued (Mesin Database).

Ubah Riwayat

Konten yang diperbarui
Memperbarui deskripsi Accumulate metode; sekarang menerima lebih dari satu parameter.

Lihat Juga

Jenis User-Defined CLR
Memanggil Fungsi Agregat User-Defined CLR