MySQL memiliki dua obyek yang sangat berguna yang biasa disebut Routine, yaitu stored function (fungsi tersimpan) dan stored procedure (prosedur tersimpan). Dengan obyek ini kita dapat meringkas beberapa perintah SQL menjadi sebuah perintah. Fasilitas Routine hanya ditemui pada MySQL versi 5 keatas.
Alasan perlunya penggunaan Routine adalah :
1. Mempermudah penggunaan
Dengan meringkas beberapa perintah SQL akan mempermudah pekerjaan terutama jika server MySQL dijalankan oleh beberapa User dan mungkin tidak semua user tersebut dapat menggunakan perintah SQL secara lancar sehingga User tersebut dapat bekerja dengan fungsi tersimpan dan prosedur tersimpan tanpa harus mengetahui perintah yang ada didalamnya.
2. Keamanan
Dengan meringkas beberapa perintah SQL, kita telah menyembunyikan semua perintah SQL yang ada didalamnya. Dengan cara ini kita dapat memperkecil pemberian hak akses kepada masing-masing user, hanya perlu memberikan hak untuk mengeksekusi fungsi tersimpan atau prosedur tersimpan tanpa harus memberikan hak untuk memanipulasi tabel aslinya.
Sebelum membuat sebuah obyek prosedur tersimpan dan fungsi tersimpan, harus dipastikan User mempunyai hak-hak berikut :
- CREATE ROUTINESHak yang diperlukan untuk membuat sebuah obyek fungsi tersimpan dan prosedur tersimpan.
- ALTER ROUTINES
Hak yang diperlukan untuk menghapus atau mengubah isi dari sebuah objek prosedur tersimpan dan fungsi tersimpan.
- EXECUTE
Hak yang digunakan untuk mengeksekusi obyek prosedur tersimpan dan fungsi tersimpan.
- FUNGSI TERSIMPAN (STORED FUNCTION)
Untuk membuat sebuah obyek fungsi tersimpan menggunakan perintah
- CREATE FUNCTION :
CREATE FUNCTION nama_fungsi ([parameter[,…]]) RETURNS tipe_hasil_kembalian
n RETURN isi_fungsi
Fungsi tersimpan akan mengembalikan hasil proses dari isi fungsi tersimpan.
Contoh :
mysql > CREATE FUNCTION fungsi1 (a SMALLINT)
-> RETURNS INT
-> RETURN a+a; Query OK, 0 rows affected (0.00 sec)
Pernyataan diatas akan membuat sebuah fungsi tersimpan yang bernama fungsi1. Pada pembuatan fungsi1, dideklarasikan sebuah variabel parameter bernama a dengan tipe data SMALLINT. Isi dari fungsi1 adalah pertambahan antara nilai dari variabel a dengan nilai variabel a yang sama (a+a).
Hasil dari pertambahan adalah sebuah nilai bertipe data INT sesuai nilai yang ada dalam keyword RETURNS meskipun merupakan pertambahan dari variabel a yang bertipe data SMALLINT.
Contoh penggunaan fungsi1 :
mysql> select fungsil(50);
fungsil(50)
100
1 row set (0.01 sec)
Perintah diatas akan memanggil fungsi1, dimana dalam perintah diatas dimasukkan nilai 50 sebagai parameter. Nilai 50 disimpan dalam variabel parameter a. Nilai variabel a tersebut digunakan dalam keyword RETURN, yaitu a + a ( 50 + 50 ), hasilnya nilai 100. Nilai 100 akan bertipe data sesuai dengan isi dari keyword RETURNS yaitu INT.
Contoh lain pembuatan fungsi tersimpan :
mysql> CREATE FUNCTION fungsi2(kar CHAR(50))Perintah diatas akan membuat sebuah fungsi tersimpan bernama fungsi2. Dalam fungsi2 di deklarasikan sebuah variabel parameter bernama kar dengan tipe data CHAR dan lebar karakter yang mampu ditampung sejumlah 50 karakter. Isi dari fungsi2 adalah fungsi LENGTH yang berguna untuk menghitung jumlah karakter dari isi variabel kar.
-> RETURNS INT
-> RETURN LENGTH(kar); Query OK, 0 rows affected (0.00 sec)
Hasil dari fungsi2 adalah sebuah nilai bertipe data INT.
Dari contoh diatas, dapat diketahui bahwa sebuah fungsi tersimpan dapat berisi sebuah fungsi MySQL atau fngsi tersimpan lainnya.
Contoh penggunaan fungsi2 :
mysql> select fungsi2('Matakuliah' )
fungsi2('Matakuliah') |
10
1 row in set (0.02 sec)
Hasil dari pemanggilan fungsi2 adalah menghitung jumlah karakter input. Jumlah karakter Matakuliah adalah 10.Untuk menghapus sebuah obyek fungsi tersimpan menggunakan perintah DROP FUNCTION.
DROP FUNCTION [IF EXISTS] nama_fungsi
Contoh :
mysql> DROP FUNCTION fungsi2;
Query OK, 0 rows affected (0.01 sec)
Demikianlah, Terima kasih.
No comments:
Post a Comment