Prosedur Tersimpan (Stored Procedure)
Prosedur tersimpan merupakan kumpulan perintah-perintah SQL atau boleh dikatakan sebagai sub program dengan nama tertentu yang disimpan pada pangkalan data. Proses yang dilakukan prosedur tersimpan ialah menerima input parameter dan kemudian mengembalikan nilai-nilai dalam bentuk parameter output kepada pemanggilnya serta melakukan operasi pemprosesan data pada pangkalan data yang dijalankan oleh suatu program seperti pencetus (trigger) atau prosedur tersimpan yang lain. Penggunaan prosedur tersimpan mempunyai kelebihan, iaitu
- Meningkatkan prestasi pada aplikasi, kerana prosedur tersimpan yang telah dibuat berjalan lebih cepat daripada perintah SQL yang dihantar aplikasi dan belum dikompilasi,
- Menurunkan trafik rangkaian dari pangkalan data dan aplikasi, kerana tidak perlu menghantar SQL yang belum dikompilasi,
- Dapat digunakan secara berulang dan telus pada semua aplikasi.
Walaupun demikian, penggunaan prosedur tersimpan juga terdapat kelemahan, iaitu
- Tidak dapat dilakukan debug,
- Membebankan perkakasan pelayan bertambah,
- Penulisannya tidak mudah dan memerlukan pengetahuan yang spesifik.
Sintaks pada Prosedur Tersimpan
Sintaks yang terdapat pada prosedur tersimpan
- Sintaks penulisan prosedur tersimpan
DELIMITER // CREATE PROCEDURE nama_prosedur() BEGIN pertanyaan sql END // DELIMITER ;
- Sintaks memanggil prosedur tersimpan
CALL nama_prosedur()
- Sintaks deklarasi pemboleh ubah prosedur tersimpan
DECLARE nama_pembolehubah jenisdatapanjang) DEFAULT nilai;
- Sintaks prosedur tersimpan dengan parameter
Terdapat tiga mode untuk parameternya iaitu
- IN, iaitu bentuk default parameter yang mana semua perubahan pada prosedur tersimpan tidak akan mempengaruhi parameter
- OUT, iaitu mode yang akan mengubah nilai parameter lalu menghantar balik kepada pemanggilnya
- INOUT, iaitu mode gabungan IN dan OUT.
Contoh sintaks mendefinisikan prosedur tersimpan dengan parameter :
DELIMITER // CREATE PROCEDURE nama_prosedur([mode] [parameter] [jenis_data]) BEGIN pertanyaan sql END // DELIMITER ;Contoh sintaks memanggil prosedur tersimpan dengan parameter :
CALL nama_prosedur([nilai_parameter])
Kursor
Kursor merupakan objek pada pangkalan data yang digunakan untuk menampung pemprosesan pernyataan SQL yang bersifat spesifik atau boleh dikatakan sebagai pemboleh ubah penampung hasil pertanyaan yang mengandungi lebih daripada satu baris atau rekod. Kursor dapat melakukan lelaran sebanyak baris data pada jadual. Terdapat beberapa sifat kursor, iaitu :
- Tidak dapat dilakukan kemas kini (hanya baca)
- Kursor hanya berjalan pada satu arah (tidak boleh skrol)
- Tidak disarankan untuk melakukan kemas kini pada jadual yang dirujuk oleh kursor kerana dapat memberikan hasil yang tidak diingini (asensitif)
Sintaks pada Prosedur Tersimpan (untuk Kursor)
Sintaks yang terdapat pada kursor
Pada kursor terdapat beberapa tahap dalam pembuatannya iaitu :
- Declare, iaitu tahap untuk mendeklarasikan kursor, dengan sintaksnya :
DECLARE nama_kursor CURSOR FOR pernyataan_SELECT;
- Open, iaitu tahap membuka atau mengaktifkan kursor, dengan sintaksnya :
OPEN nama_kursor;
- Fetch, iaitu tahap mengambil data dari kursor dan kemudian menampungnya pada sebuah pemboleh ubah, dengan sintaksnya :
FETCH nama_kursor INTO senarai_pembolehubah
- Close, iaitu tahap untuk menonaktifkan kursor, dengan sintaksnya :
CLOSE nama_kursor
Perbezaan Prosedur Tersimpan dan Kursor
Perbezaan prosedur tersimpan dengan kursor adalah prosedur tersimpan hanya menampung perintah-perintah deklarasi dari MySQL manakala kursor menampung hasil pertanyaan sekaligus sebagai penunjuk (pointer) kepada hasil pertanyaan tersebut. Hal ini membolehkan kursor melakukan perintah yang kompleks yang tidak dapat dilakukan oleh prosedur tersimpan. Salah satunya adalah melakukan lelaran pada rekod.

