Terdapat beberapa jenis user defined function, yaitu : Scalar function, Table value function dan Aggregate function. Pada artikel ini saya akan membahas tentang user scalar function. Untuk jenis user function lain akan saya bahas di artikel berikutnya.
Scalar function merupakan fungsi yang mengembalikan sebuah nilai tunggal, misalnya penghitungan jumlah record dalam sebuah table, menghitung nilai rata-rata sebuah kumpulan nilai, dll.
Pada artikel ini saya akan membuat contoh bagaimana caranya melakukan enkripsi sederhana yang dibuat dengan menggunakan user defined scalar value function. Enkripsi sederhana yang digunakan hanyalah sebuah demo dengan menggunakan algoritma biasa pula, tentunya kita dapat menggunakan fitur enkripsi yang sudah disediakan oleh SQL Server itu sendiri. SQL Server yang saya gunakan yaitu SQL Server 2008.
Skenario yang digunakan untuk melakukan enkripsi sederhana ini yaitu dengan mengubah semua karakter dari sebuah teks input menjadi nilai ASCII dan ditambah dengan nilai 5 (tentunya anda dapat menambahkannya dengan nilai yang lain) setelah itu di konversi balik menjadi nilai CHAR sehingga nantinya setiap karakter yang terdapat didalam input teks tersebut bergeser sesuai dengan penambahan nilai yang digunakan.
1. Ketikkan script berikut ini didalam sebuah database yang telah anda pilih dan eksekusi di SQL Server Management Studio :
2. Setelah sukses dieksekusi maka fungsi tersebut akan muncul di folder database yang anda gunakan, gambarnya dapat dilihat dibawah ini :

3. Eksekusi fungsi tersebut dengan menjalankan perintah Select dan masukkan input berupa teks yang akan di enkripsi :

4. Dari gambar diatas dapat kita lihat hasil enkripsi sederhana dari teks ‘SQL Server 2008’ menjadi ‘XVQ%Xjw{jw%755=’.
Kemudian bagaimana caranya kita membuat fungsi untuk decrypt teks hasil enkripsi diatas? Jawabannya cukup mudah, yaitu kita tinggal membuat fungsi yang mirip dengan fungsi enkripsi diatas dengan mengubah algoritma enkripsi dengan mengurangi nilai ASCII nya dengan nilai –5 per karakter yang terdapat di dalam teks hasil enkripsi.
Berikut langkah-langkahnya :
1. Ketikkan script berikut ini didalam sebuah database yang telah anda pilih dan eksekusi di SQL Server Management Studio :
CREATE Function [dbo].[SimpleDecrypting]
--input parameter :
(@text varchar(50))
--nilai scalar yang dikembalikan :
Returns varchar(50)
As
Begin
--hitung jumlah karakter yang terdapat
--di dalam input text
Declare @len int
Set @len = LEN(@text)
Declare @tempdata varchar(50)
Set @tempdata = ''
Declare @counter int = 1
--looping semua karakter yang terdapat
--di dalam input text
While @counter <= @len
Begin
--fungsi ASCII akan mengembalikan nilai ASCII dari
--sebuah karakter
--fungsi CHAR akan mengembalikan nilai karakter
--dari sebuah nilai ASCII
--fungsi Substring digunakan untuk mengambil karakter
--atau teks dengan jumlah tertentu dan dimulai dari
--indeks tertentu (indeks dimulai dari 1)
Set @tempdata = @tempdata +
CHAR(ASCII(Substring(@text,@counter,1))-5)
Set @counter = @counter + 1
End
--sebuah fungsi harus dikembalikan dengan perintah Return
--variabel @tempdata merupakan teks yang telah di enkripsi
Return @tempdata
End
2. Setelah sukses dieksekusi maka fungsi tersebut akan muncul di folder database yang anda gunakan, gambarnya dapat dilihat dibawah ini :

3. Eksekusi fungsi tersebut dengan menjalankan perintah Select dan masukkan input berupa teks yang akan di enkripsi :

Dari gambar diatas dapat kita lihat hasil dekkripsi dari teks ‘XVQ%Xjw{jw%755=’ diubah kembali menjadi ‘SQL Server 2008’. Pada artikel berikutnya saya akan membahas tentang User Defined Table-Value function.