Di SQL Server, UDF skalar, atau fungsi skalar yang ditentukan pengguna, adalah fungsi yang ditentukan pengguna yang mengembalikan nilai tunggal.
Ini berbeda dengan fungsi bernilai tabel, yang mengembalikan kumpulan hasil dalam bentuk tabel.
Fungsi yang ditentukan pengguna dapat ditulis sebagai UDF T-SQL atau UDF CLR (Common Language Runtime). CLR memungkinkan Anda membuat UDF dalam kode terkelola menggunakan bahasa pemrograman .NET Framework apa pun. Fungsi-fungsi ini kemudian dapat diakses oleh T-SQL atau kode terkelola lainnya.
Contoh 1 – UDF Skalar Dasar
Berikut adalah contoh kode yang digunakan untuk membuat UDF skalar T-SQL dasar.
BUAT FUNGSI dbo.ufn_discountPrice( @price DECIMAL(12,2), @discount DECIMAL(12,2) ) RETURNS DECIMAL (12,2)ASBEGIN RETURN @price * (1 - @discount);END;UDF skalar ini menerima dua parameter;
@price
dan@discount
. Ini diteruskan ke fungsi sebagai argumen setiap kali fungsi dipanggil. Fungsi mengambil nilai argumen tersebut, melakukan penghitungan menggunakan nilai tersebut, lalu mengembalikan nilai yang dihasilkan. Dalam hal ini, harga diskon dikembalikan.Contoh 2 – Aktifkan UDF
Setelah UDF dibuat, UDF dapat dipanggil dalam kode T-SQL kapan pun Anda membutuhkannya.
Berikut ini contoh pemanggilan UDF:
SELECT dbo.ufn_discountPrice(100, .2) SEBAGAI Hasil;Hasil
+----------+| Hasil ||----------|| 80.00 |+----------+Anda juga dapat menggunakan UDF skalar dalam kolom yang dihitung. Ini bisa sangat berguna jika Anda memerlukan kolom yang dihitung untuk mengakses data di tabel lain.
Opsi Fungsi
Saat Anda membuat UDF skalar, ada berbagai opsi yang dapat Anda terapkan pada fungsi tersebut.
Misalnya Anda dapat menentukan apakah itu harus terikat skema atau tidak. Anda dapat menentukan bahwa itu harus dienkripsi. Anda juga dapat menentukan
EXECUTE AS
klausa untuk menentukan konteks keamanan di mana fungsi yang ditentukan pengguna dijalankan.Lihat dokumentasi Microsoft untuk daftar detail opsi yang dapat Anda berikan saat membuat atau mengubah fungsi yang ditentukan pengguna.
Jenis Data Parameter
Untuk fungsi T-SQL, semua tipe data, termasuk tipe yang ditentukan pengguna CLR dan tipe tabel yang ditentukan pengguna, diizinkan kecuali stempel waktu dan kursor nonskalar dan tabel jenis.
Untuk fungsi CLR, semua tipe data, termasuk tipe yang ditentukan pengguna CLR, diperbolehkan kecuali teks , nteks , gambar , jenis tabel yang ditentukan pengguna, stempel waktu tipe data, dan kursor non nonskalar dan tabel jenis.
Tipe Data Pengembalian
Tipe data yang dikembalikan untuk UDF skalar T-SQL dapat berupa tipe data apa pun kecuali stempel waktu dan kursor nonskalar dan tabel jenis.
Fungsi CLR dapat menggunakan tipe data apa pun kecuali teks , nteks , gambar , stempel waktu , dan kursor non nonskalar dan tabel jenis.
Baik fungsi T-SQL dan CLR dapat memiliki tipe yang ditentukan pengguna CLR untuk nilai pengembaliannya.