Dalam Microsoft SQL Server, function merupakan salah satu objek database yang digunakan untuk mengenkapsulasi logika bisnis tertentu agar dapat digunakan kembali (reusable). Salah satu jenis function yang umum digunakan adalah Scalar Valued Function (SVF).
Scalar Valued Function adalah fungsi yang mengembalikan satu nilai tunggal (single value) dengan tipe data tertentu, seperti INT, VARCHAR, atau DECIMAL. Fungsi ini sangat berguna untuk melakukan perhitungan atau manipulasi data yang bersifat berulang.
Konsep Dasar Scalar Valued Function
Karakteristik utama Scalar Valued Function:
Mengembalikan satu nilai tunggal (scalar).
Menggunakan perintah RETURNS.
Harus diakhiri dengan perintah RETURN.
Dapat digunakan dalam query seperti fungsi bawaan SQL (GETDATE(), LEN(), dll).
Dapat menerima parameter sebagai input.
Struktur Umum Scalar Valued Function
Sintaks dasar:
CREATE FUNCTION nama_fungsi (parameter)
RETURNS tipe_data
AS
BEGIN
DECLARE variabel
— proses logika
RETURN nilai
END
Implementasi Scalar Valued Function
Dengan menggunakan tabel pada materi inner join akan dibuat fungsi untuk mengambil nilai siswa berdasarkan ID_Siswa sebagai berikut:
CREATE FUNCTION dbo.GetNilaiSiswa (@ID_Siswa INT)
RETURNS INT
AS
BEGIN
DECLARE @Nilai INT;
SELECT @Nilai = Nilai
FROM Nilai_Siswa
WHERE ID_Siswa = @ID_Siswa;
RETURN @Nilai;
END;
Penjelasan:
Parameter: @ID_Siswa
Variabel lokal: @Nilai
Mengambil nilai dari tabel Nilai_Siswa
Mengembalikan nilai tunggal
Penggunaan Fungsi
Fungsi GetNilaiSiswa dapat dipanggil untuk menampilkan nilai per siswa dalam query SQL sebagai berikut:
SELECT
Nama_Siswa,
dbo.GetNilaiSiswa(ID_Siswa) AS Nilai
FROM Siswa;
Hasil:
| Nama_Siswa | Nilai |
| Andi | 85 |
| Budi | 90 |
| Citra | NULL |
Analisis:
Citra tidak memiliki data nilai sehingga menghasilkan NULL. Untuk meningkatkan kualitas fungsi, dapat ditambahkan penanganan NULL.
Setelah dimodifikasi fungsi sebagai berikut:
CREATE FUNCTION dbo.GetNilaiSiswaDefault (@ID_Siswa INT)
RETURNS INT
AS
BEGIN
DECLARE @Nilai INT;
SELECT @Nilai = Nilai
FROM Nilai_Siswa
WHERE ID_Siswa = @ID_Siswa;
RETURN ISNULL(@Nilai, 0);
END;
Kelebihan dan Kekurangan Scalar Valued Function
Kelebihan:
- Modularisasi logika (kode lebih rapi)
- Reusability tinggi
- Mempermudah maintenance
Kekurangan:
- Dapat menurunkan performa jika digunakan dalam query besar
- Dieksekusi per baris (row-by-row execution)
- Kurang optimal dibandingkan JOIN dalam beberapa kasus
Perbandingan dengan Query Biasa
Tanpa function:
SELECT s.Nama_Siswa, n.Nilai
FROM Siswa s
LEFT JOIN Nilai_Siswa n ON s.ID_Siswa = n.ID_Siswa;
Dengan function:
SELECT Nama_Siswa, dbo.GetNilaiSiswa(ID_Siswa)
FROM Siswa;
Kesimpulan
- Scalar Valued Function merupakan fitur penting dalam MS SQL Server yang memungkinkan pengembang untuk membuat fungsi khusus yang mengembalikan satu nilai.
- Scalar Valued Function cocok untuk logika sederhana dan reusable
- Scalar Valued Function harus digunakan secara bijak untuk menghindari penurunan performa
- Alternatif seperti JOIN tetap perlu dipertimbangkan untuk efisiensi
Slide materi dapat dilihat di sini.
