Creating User Defined Scalar Value Function

Posted at : Dec/22/2009
10369 Views | 4 Comments

User defined function merupakan object database yang digunakan untuk membuat function yang didefinisikan oleh user. SQL Server sudah memiliki built-in function yang dapat langsung digunakan sesuai dengan kebutuhan aplikasi, contohnya seperti Len, ASCII, Cast dan lain-lain. Apabila built-in function yang tersedia tidak dapat memenuhi kebutuhan aplikasi maka kita harus membuat sendiri fungsi tersebut.

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.

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].[SimpleEncrypting]
--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 :

 

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.


[Comments]

eone (Jun/22/2011 04:03:02)

 Nice artikel pak...
Tapi kok code encrypt sm decryptnya sama?

 

Rully (Jun/23/2011 12:37:21)

eone > Betul..saya baru lihat, nanti saya perbaiki...thanks :)

arief (Oct/29/2011 12:36:06)

sudah di perbaiki belum yah, perasaan masih sama 

Rully (Oct/29/2011 05:56:46)

Maaf baru sekarang diperbaiki, terima kasih sudah diingatkan...silahkan dicoba lagi :)


[Write your comment]

Name (required)

Email (required-will not published)

 
Comment
DHL9
Input code above below (Case Sensitive) :

ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Founder & IT Trainer Native Enterprise | MCT (2008-2019) | MVP (2009-2016) | Xamarin Certified Professional | MTA | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.

[Read More...]

TOP DOWNLOAD

Mapping Hak Akses User Pada MenuStrip Sampai Control Button
downloaded 6982 times

Bagaimana caranya menginstal database ketika deploying sebuah aplikasi?
downloaded 4893 times

Simple Voice Engine Application With Sound Player Class...
downloaded 4045 times

Change Group,Sort Order, Filtering By Date in Crystal Reports
downloaded 3460 times

WinForms DataGrid Paging With SqlDataAdapter
downloaded 2881 times


LINKS

CERTIFICATIONS

Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2024   Rully Yulian MF   All rights reserved.