Wednesday, March 30, 2011

MySQL Prepare Statement

Pada umumnya sebuah aplikasi terdapat fasilitas pencarian data, SQL dalam pencarian data umumnya berupa SELECT yang memiliki kriteria WHERE dengan sebuah atau beberapa field.




Apabila field dari kriteria WHERE tersebut terdapat banyak pilihan, misalkan.
  • Ingin mencari data judul buku menggunakan field Judul Buku
  • ngin mencari data penerbit hanya menggunakan field penerbit
  • Ingin mencari data penulis hanya menggunakan field penulis
Untuk keperluan tersebut pada umum nya memerlukan tiga buah SQL yaitu.
  • SQL SELECT dengan WHERE dengan field judul buku untuk mencari judul buku
  • SQL SELECT dengan WHERE dengan field penerbit untuk mencari penerbit buku
  • SQL SELECT dengan WHERE dengan field penulis untuk mencari penulis buku
Apabila hanya menulis tiga buah SQL mungkin tidak apa-apa, tetapi bila mencapai belasan SQL akan terasa tidak efesien, untuk keperluan tersebut pada MySQL dapat menggunakan Prepare Statement.

Prepare Statement berguna ketika ingin menjalakan query yang memiliki struktur SQL mirip. Dengan menggunakan Prepare Statement menulis sript SQL menjadi lebih singkat.

Pada kasus ini saya membuat Prepare Statemen didalam Store Procedure agar query menjadi lebih dinamis, sebagai contoh adalah terdapat sebuah query yang memiliki kriteria Where dengan Field kunci-nya berubah-ubah.

Pada di skrip dibawah ini saya menuliskan nya dalam bentuk Store Procedure agar terlihat manfaat penggunaannya.
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_barang_view`(v_keyfield varchar(255), v_keyword varchar(255)
begin
  set @qry = concat('select * from barang where ', v_keyfield , ' = "', v_keyword,'"');
  prepare exec from @qry;
  execute exec;
end $$
DELIMITER;
Perintah diatas adalah sebuah query SELECT untuk menampilkan data barang dengan kriteria field pencarian yang berbubah-ubah tergantung dari nilai paramater v_keyfield dari Store Procedure tersebut.
  • SET adalah untuk pemberian nilai ke dalam sebuah variable
  • CONCAT adalah fungsi mysql untuk mengabungkan string
  • PREPARE FROM untuk melakukan persiapan eksekusi query
  • EXECUTE  perintah untuk melakukan eksesusi query
Penjelasan mengenai Store Procedure dapat dilihat di klik ini dan function Concat di klik ini

No comments:

Post a Comment