SQL Server dikirimkan dengan kumpulan fungsi bawaan yang memungkinkan Anda melakukan berbagai operasi. Setiap fungsi bawaan memiliki tujuan tertentu, dan tidak dapat dimodifikasi. Jika suatu fungsi memenuhi tujuan Anda, Anda dapat melanjutkan dan menggunakannya.
Tetapi bagaimana jika Anda tidak dapat menemukan fungsi yang sesuai dengan tujuan Anda?
Maka saatnya untuk menulis fungsi yang ditentukan pengguna Anda sendiri.
Apa itu Fungsi Buatan Pengguna?
Fungsi yang ditentukan pengguna (UDF) adalah rutin yang dapat mengambil parameter, melakukan perhitungan atau tindakan lain, dan mengembalikan hasil. Dan seperti namanya, itu didefinisikan dan dibuat oleh pengguna. Dalam hal ini, "pengguna" adalah programmer SQL, DBA, atau siapa pun yang menulis fungsi tersebut.
Istilah fungsi yang ditentukan pengguna membedakannya dari fungsi bawaan yang dikirimkan bersama SQL Server.
Anda dapat menentukan apakah UDF akan menerima parameter apa pun, dan jika demikian, nama, tipe datanya, dll. Misalnya, Anda dapat menulis UDF yang menerima ID produk sebagai argumen. Fungsi tersebut kemudian dapat menggunakannya dalam perhitungannya. Ini berarti bahwa output dari fungsi tersebut akan bergantung pada input yang diberikan padanya saat dipanggil.
Setelah UDF dibuat, UDF dapat dipanggil.
Memanggil Fungsi Buatan Pengguna
Kode di dalam fungsi tidak dieksekusi saat fungsi dibuat. Itu hanya dijalankan ketika fungsi dipanggil .
"Memanggil" suatu fungsi kadang-kadang disebut sebagai "memanggil" suatu fungsi. Ini adalah saat Anda mendapatkan fungsi untuk melakukan apa yang harus dilakukan. Pada dasarnya, Anda membuat fungsi, dan kemudian hanya duduk di sana menunggu untuk dipanggil.
Anda dapat memanggil UDF dari kode T-SQL Anda, sama seperti Anda memanggil fungsi sistem. Misalnya, Anda dapat menggunakan UDF di WHERE
klausa untuk mempersempit hasil SELECT
penyataan. Anda juga bisa menggunakannya dalam daftar kolom untuk kembali.
UDF juga dapat digunakan dalam kolom yang dihitung. Ini bisa berguna jika Anda membutuhkan kolom yang dihitung untuk mengakses data di kolom lain.
Parameter
Fungsi yang ditentukan pengguna dapat menerima hingga 1024 parameter input. Namun, Anda juga dapat menentukan fungsi tanpa parameter apa pun jika diperlukan.
Contoh fungsi bawaan tanpa parameter apa pun adalah GETDATE()
. Fungsi ini hanya mengembalikan stempel waktu sistem database saat ini. Tidak perlu melewati parameter apa pun untuk mendapatkannya.
Contoh fungsi yang ditentukan pengguna dengan satu parameter dapat berupa fungsi yang mengembalikan detail kontak pelanggan berdasarkan ID pelanggan. Saat Anda memanggil fungsi, Anda meneruskan ID pelanggan ke fungsi sebagai parameter. Fungsi tersebut kemudian dapat mencari detail pelanggan dan mengembalikannya dalam variabel pengembalian. Jika Anda memasukkan ID pelanggan yang berbeda, fungsi tersebut akan mengembalikan detail untuk pelanggan tersebut.
Manfaat Fungsi Buatan Pengguna
Beberapa manfaat utama UDF antara lain sebagai berikut.
- Pemrograman modular
- UDF memungkinkan Anda menulis kode sekali, lalu memanggilnya sebanyak yang diperlukan. Tidak perlu menulis ulang kode yang sama setiap kali Anda perlu melakukan hal yang sama. Cukup panggil fungsinya saja. Ini juga bermanfaat jika ada perubahan. Anda hanya perlu memperbaruinya di satu tempat – fungsi. Jika Anda tidak menggunakan fungsi tersebut, Anda harus memperbaruinya di beberapa tempat di seluruh aplikasi Anda.
- Kinerja
- UDF mengurangi biaya kompilasi kode T-SQL dengan menyimpan rencana dan menggunakannya kembali untuk eksekusi berulang. UDF tidak perlu diurai ulang dan dioptimalkan ulang setiap kali digunakan. Ini menghasilkan waktu eksekusi yang jauh lebih cepat.
- Pengurangan lalu lintas jaringan
- Operasi yang memfilter data berdasarkan batasan kompleks yang tidak dapat diekspresikan dalam ekspresi skalar tunggal dapat diekspresikan sebagai fungsi. Fungsi tersebut kemudian dapat dipanggil di
WHERE
klausa untuk mengurangi jumlah baris yang dikirim ke klien.
UDF juga dapat memiliki manfaat lain yang lebih spesifik, seperti pada contoh sebelumnya yang saya sebutkan dengan kolom komputasi yang mengakses data di tabel lain.
Jenis Fungsi Buatan Pengguna
Ada dua jenis fungsi yang ditentukan pengguna T-SQL:
- Fungsi Skalar
- Fungsi skalar yang ditentukan pengguna mengembalikan nilai data tunggal. Anda menentukan tipe nilai dalam fungsi. Jenis yang dikembalikan dapat berupa tipe data apa pun kecuali teks , nteks , gambar , kursor , dan stempel waktu .
- Fungsi Bernilai Tabel
- Fungsi bernilai tabel (TVF) mengembalikan tabel. Oleh karena itu, tipe pengembaliannya adalah tabel . Ada dua jenis TVF:TVF inline, dan TVF multi-pernyataan. TVF inline tidak memiliki badan fungsi. Tabel pengembaliannya adalah hasil dari satu
SELECT
penyataan. TVF multi-pernyataan di sisi lain, memang memiliki badan fungsi. Dengan TVF multi-pernyataan, Anda menentukan struktur tabel dalam variabel kembali.
Anda juga dapat membuat fungsi skalar dan nilai tabel sebagai fungsi common language runtime (CLR) yang ditentukan pengguna.
Dimulai dengan SQL Server 2005 (9.x), Anda dapat menulis fungsi yang ditentukan pengguna dalam bahasa pemrograman Microsoft .NET Framework apa pun, seperti Microsoft Visual Basic .NET atau Microsoft Visual C#.