Rabu, 12 Januari 2011

Memanfaatkan mySQL Stored Procedure pada script PHP

Apakah mySQL Stored Procedure itu?


Semacam program eksekusi yang terletak pada database server dan siap di panggil. Bahasa yang ditulis pada stored procedure ini haruslah di dukung oleh database server. Beberapa database server memiliki bahasa spesial yang dijadikan sebagai alternativ SQL, contohnya :

* PL/SQL - Stored Procedure yang digunakan untuk database server tipe Oracle
* Transact SQL - Stored Procedure yang digunakan pada database server Microsoft SQL Server

Stored Procedure biasanya memiliki fitur-fitur seperti :
* Menerima dan mengembalikan nilai data dari environment yang memanggilnya
* Mendeklarasikan serta memakai variabel lokal
* Menjalankan SQL Query di server
* Melakukan perulangan pada satu set statement selama beberapa kali
* Pengecekan logika kondisional

Membuat Stored Procedure di mySQL

Pertama-tama, kita deklarasikan procedure yang ingin kita buat dengan menggunakan fungsi CREATE PROCEDURE.

Sebagai catatan, jika hanya ingin membuat sebuah stored procedure dengan satu baris, maka cukup dengan menuliskan perintah-perintah stored procedure tersebut setelah nama procedurenya :

CREATE PROCEDURE proc_name() body_statement;

Untuk membuat stored procedure yang lebih kompleks, kita gunakan beberapa baris dalam sebuah stored procedure (karna capek nulis, aku singkat SP aja ya). Disini, kita tambahkan statement BEGIN dan END untuk membatasi stored procedure itu, hal ini tidak ada bedanya dengan penulisan function pada programming language yang lainnya, kemudian setelah statement END, kita tambahkan lagi stame DELIMITER ';'/, sebagai penanda bahwa setiap baris hanya dapat dieksekusi dengan delimiter tersebut

CREATE PROCEDURE nama_procedure()
BEGIN
stamement;
statement;
...
END/
DELIMITER ';'/


Nah, sekarang kalau ingin memasukan beberapa parement ke dalam SP tersebut, tinggal masukan saja setelah nama SP-nya :
CREATE PROCEDURE nama_procedure(parameter, parameter, ...)

Untuk perintah-perintah yang digunakan, tidak ada bedanya seperti saat kita melakukan query SQL, saya rasa semua pasti mengerti ^_^
Setelah stored procedure kita selesai dibuat, sekarang tinggal memanggilnya dengan perintah SQL :

CALL nama_procedure();

Sedangkan kalau ingin menghapus sebuah SP, gunakan perintah :

DROP PROCEDURE proc_name;

Sebagai contoh, lihat query ini :
mysql> USE test;
mysql> DELIMITER '/';
mysql> CREATE PROCEDURE Msg()
-> BEGIN
-> SELECT CURRENT_TIME() AS Time;
-> SELECT 'Hello world!' As Message;
-> END/
Query OK, 0 rows affected (0.75 sec)

mysql> DELIMITER ';'/
mysql> CALL Msg();
+----------+
| Time |
+----------+
| 17:35:51 |
+----------+
1 row in set (0.07 sec)

+--------------+
| Message |
+--------------+
| Hello world! |
+--------------+
1 row in set (0.08 sec)

Query OK, 0 rows affected (0.09 sec)


Sebagai tambahan, kita bisa mendefinisikan tipe-tipe parameter pada SP :
* IN - parameter ini hanya untuk menerima data
* OUT - parameter ini hanya untuk mengembalikan nilai data ke sebuah variabel
* INOUT - parameter ini bisa menerima data, dan mengembalikai nilai data ke sebuah variabel
* Jika tidak di spesifikasikan, maka defaultnya adalah IN

contoh penggunaan tipe parameter :

DROP DATABASE IF EXISTS Test;
CREATE DATABASE Test;
USE Test;
DROP TABLE IF EXISTS Map;
CREATE TABLE Map (C REAL, F REAL);
--
DROP PROCEDURE IF EXISTS C2F;
DELIMITER '/';
CREATE PROCEDURE C2F(IN C REAL, OUT F REAL)
BEGIN
INSERT INTO Map VALUES (C, 1.8*C+32.0);
SELECT 1.8*C+32.0 INTO F;
END/
DELIMITER ';'/
--
CALL C2F(0.0, @F0);
CALL C2F(1.0, @F1);
CALL C2F(22.0, @F2);
CALL C2F(40.0, 100.0);
--
SELECT 'Output values:' AS '---';
SELECT @F0, @F1, @F2;
SELECT 'C2F map table:' AS '---';
SELECT * FROM Map;


Hasil outputnya :

---
Output values:
@F0 @F1 @F2
32 33.8 71.6
---
C2F map table:
C F
0 32
1 33.8
22 71.6
40 104


Nah, sekarang bagaimana memanfaatkannya di PHP, tidak peduli PHP versi berapapun, karena kita hanya menggunakan fungsi-fungsi yang udah standar seperti :
-mysql_query
-mysql_result
-mysql_fetch_array

Sebagai contoh, kita gunakan database terakhir diatas, pertama lakukan query:
mysql_query("CALL C2F(22.0, @F2)");
mysql_query("CALL C2F(40.0, 100.0)");

kemudian untuk menselect valuenya, tinggal mengkombinasikan mysql_query, mysql_result, dan mysql_fetch_array pada script php kita (saya yakin dah pada paham).

Untuk penggunaan setiap fungsinya, tidak dijelaskan karena disini hanyalah pemaparan alur logika sederhana dari penggunaan SP.

Thank u,,,

sumber :http://kecebong.madpage.com