DATABASE TERDISTRIBUSI
“ Stored Procedure “
DISUSUN OLEH :
B. Fungsi
Untuk melakukan retrieving suatu data dalam table, kita bisa menggunakan stored
procedure. Stored Procedure ini sebaiknya digunakan apabila database server terpisah
secara fisik dengan aplikasi atau disebut aplikasi Multi Tier. Dengan mengggunakan
stored procedure SQL tidak akan akan melakukan loading semua table yang ter-relasi,
tetapi langsung melakukan filtering berdasarkan query yang kita maksud. Stored
procedure menyimpan statement-statement SQL dalam sebuah berkas yang disimpan di
database server, sehingga dari sisi performa eksekusi, utilitas jaringan, dan keamanan,
stored procedure banyak dipakai sebagai solusi akses data.
Query yang ada di SP sudah di-compile terlebih dahulu, jadi ada 1 step yang di-
skip pada SP. Compile maksudnya adalah pemilihan mana execution plan yang paling
optimal.
a) Keuntungan menggunakan Stored Procedure :
tored Procedure lebih fleksibel karena ada parameter didalamnya
Proses dilakukan di Database Server sehingga lebih cepat, aplikasi
cukup memanggil stored procedure dan mengirim parameter yang
diperlukan
untuk membagi beban resource yang terpakai saat aplikasi di
jalankan. Jika semua query dijalankan pada aplikasi/client (Front
End) maka resource yang terpakai pada client tersebut akan besar,
oleh karena itu perintah query tersebut dibuat pada stored
procedure (eksekusi pada server)
untuk mempermudah maintain aplikasi. Apabila ada proses query
yang sama dan berulang, dengan stored procedure akan lebih
simple dalam proses pembuatan aplikasi.
Mendukung ANSI model terhadap database. Ansi model adalah
sebuah model database yang memodelkan penglihatan user
terhadap database menjadi 3 komponen yaitu user view, logical
view dan fisikal view
Stored procedure mencegah terjadinya SQL injection
b) Kekurangannya :
Apabila ingin mengganti Database Server, misalnya dari Oracle ke
SQL
Server, porting Stored Procedurenya menyulitkan, antara PL SQL
ke T-SQL. Berbeda jika embedded di Aplikasi, kita cukup
mengganti Koneksinya karena Logicnya dilakukan di Aplikasi dan
menggunakan SQL Standard.
C. Penerapan
Untuk membuat stored procedure/function pada database digunakan pernyataan
CREATE PROCEDURE atau CREATE FUNCTION.PROCEDURE
Sintak :
Keterangan :
sp_name: Nama routine yang akan dibuat
proc_parameter: Parameter stored procedue, terdiri dari :
1. Contoh 1:
mysql> delimiter //
mysql> create procedure pMhsIlkom(OUT x varchar(25))
-> begin
-> end
-> //
-> //
Dari contoh diatas terlihat bahwa parameter “x” (sebagai OUT) digunakan untuk
menampung hasil dari perintah routine_body. Pernyataan “into x”, inilah yang
2. Contoh 2 :
mysql> delimiter //
mysql> create procedure pMhs(out x varchar(25), out y varchar(3), in z
char(3))
-> begin
-> select nama,alamat into x,y from mahasiswa where kode_prodi=z;
-> end
-> //
mysql> call pMhs(@Nama,@Alamat,'P01');
mysql> select @Nama, @Alamat;
Dari contoh yang kedua ini terlihat bahwa parameter “z” (sebagai IN)
digunakan sebagai jalur untuk masukan routine dan parameter “x” dan “y”
digunakan untuk menampung hasil dari perintah routine_body. Pernyataan “into
x, y”, inilah yang mengakibatkan “x” dan “y” menyimpan informasi nama dan
alamat (sebagai kolom yang ter-select).
Pernyataan “call pMhs(@Nama, @Alamat)” menghasilkan informasi yang
kemudian disimpan pada parameter @Nama dan @Alamat, sedangkan parameter
“z” digunakan untuk menampung string ‘P01’ yang kemudian digunakan untuk
memproses routine_body . Kemudian untuk menampilkan informasi ke layar
digunakan pernyataan “select @Nama, @Alamat”.
Jika diperhatikan pada contoh1 dan contoh2, dalam membuat routine
selalu menggunakan delimiter. Hal ini digunakan untuk mengubah pernyataan
delimiter dari “;” ke “//” ketika suatu procedure sedang didefinisikan. Sehingga
sebelum delimiter ditutup, meskipun sudah ditekan enter masih dianggap satu-
kesatuan perintah. Jika menggunakan perintah delimiter, maka untuk menutupnya
digunakan karakter backslash (‘\’) karena karakter ini merupakan karakter escape
untuk MySQL.
1. Buatlah satu stored procedure dengan nama HapusProduk, dengan satu argumen
yaitu kode_produk_param bertipe teks (varchar) dengan perintah berikut :
DELIMITER |
DELIMITER ;
2. Setelah selesai dieksekusi, pastikan stored procedure tersebut sudah terbentuk di
database kita.
3. Sebelum kita mengeksekusi stored procedure tersebut. Kita coba lihat hasil query
untuk produk "PROD-0000002" untuk ketiga table yang disebutkan di atas. Ini
untuk memastikan adanya row untuk produk tersebut.