Anda di halaman 1dari 7

MAKALAH

DATABASE TERDISTRIBUSI
“ Stored Procedure “

DISUSUN OLEH :

Ardiansyah Biat 20142205002


A. Definisi
Stored procedure adalah suatu sub program atau sekelompok perintah SQL yang
tersimpan dan mennyatu dalam suatu database. Stored Procedure disimpan dalam
MySQL Server bukan di computer client dan akan menyatu dengan sebuah database
dalam server.
Stored Procedure dan Trigger adalah fasilitas baru yang ditambahkan dalam
MySQL versi 5.x. Dengan adanya fasilitas ini menjadikan MySQL sebagai aplikasi
database yang secara penuh dapat menerapkan konsep pemograman Client-Server, bukan
hanya multi-user. Fasilitas ini sangat di tunggu-tunggu para pemakai MySQL.
Pada saat dieksekusi dari program aplikasi misalnya VB atau Delphi baris-baris
dalam Stored Procedure akan dilaksanakan di computer server (bukan di computer client)
dan hasilnya di kirimkan ke computer client. Dengan demikian, akan terjadi pembagian
kerja antara client dan server, serta aktivitas lalu lintas jaringan menjadi terkurangi,
Akibatnya unjuk kerja client server meningkat dan makin efisien.
Stored procedure tersimpan dalam database dalam bentuk kode yang sudah
terkompilasi sehingga prosesnya menjadi lebih cepat.

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.

Setiap kali Query Processing menjalankan query, gambaran prosesnya sebagai


berikut :
1. Pengecekan Syntax
2. Pemilihan execution plan yang paling optimal
3. Eksekusi query

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 :

CREATE PROCEDURE sp_name ([proc_parameter[,...]])


[characteristic ...] routine_body

Keterangan :
sp_name: Nama routine yang akan dibuat
proc_parameter: Parameter stored procedue, terdiri dari :

IN : parameter yang digunakan sebagai masukan.

OUT : parameter yang digunakan sebagai keluaran

INOUT : parameter yang digunakan sebagai masukan sekaligus keluaran.

routine_body: terdiri dari statemen prosedur SQL yang valid.

Agar lebih jelas, perhatikan contoh penggunaannya berikut ini.

1. Contoh 1:

mysql> delimiter //
mysql> create procedure pMhsIlkom(OUT x varchar(25))

-> begin

-> select nama into x from mahasiswa where kode_prodi='P01';

-> end

-> //

mysql> call pMhsIlkom(@Nama);

-> select @Nama;

-> //

Dari contoh diatas terlihat bahwa parameter “x” (sebagai OUT) digunakan untuk

menampung hasil dari perintah routine_body. Pernyataan “into x”, inilah yang

mengakibatkan “x” menyimpan informasi nama (sebagai kolom yang ter-select).

Untuk menjalankan procedure digunakan ststemen call. Pernyataan “call

pMhsIlkom(@Nama)” menghasilkan informasi yang kemudian disimpan pada

parameter “@Nama”. Kemudian untuk menampilkan informasi ke layar digunakan

pernyataan “select @Nama”.

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.

D. Contoh Kasus dan Contoh Query


Berikut adalah contoh pembuatan dan penggunaan stored procedure untuk menghapus
data berdasarkan "kode produk" untuk tiga table yaitu table "ms_produk",
"ms_harga_harian", dan "tr_penjualan".

1. Buatlah satu stored procedure dengan nama HapusProduk, dengan satu argumen
yaitu kode_produk_param bertipe teks (varchar) dengan perintah berikut :

DELIMITER |

CREATE PROCEDURE HapusProduk(IN kode_produk_param VARCHAR(12))


BEGIN
DELETE FROM ms_produk WHERE kode_produk = kode_produk_param;
DELETE FROM ms_harga_harian WHERE kode_produk = kode_produk_param;
DELETE FROM tr_penjualan WHERE kode_produk = kode_produk_param;
END;

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.

4. Sekarang coba panggil stored procedure HapusProduk dengan parameter "PROD-


0000002" dan tunggu beberapa saat sampai eksekusi selesai.
5. Coba lakukan kembali perintah pada point no. 3 dan terlihat bahwa sudah tidak
terdapat data untuk produk "PROD-0000002" pada ketiga table tersebut.

Anda mungkin juga menyukai