February 5, 2012

Mysql Variabel Store Prosedur

mysql database
Variabel Lokal
Variabel lokal adalah variable yang hanya dapat digunakan dalam isi prosedur tersimpan. Variabel lokal tidak dapat digunakan selain dalam isi prosedur tersimpan, diantara keyword BEGIN dan END.

Untuk mendeklarasikan variabel lokal menggunakan keyword DECLARE. DECLARE nama_variabel[, ...] tipe [DEFAULT nilaidefault]

Contoh :
mysql> DELIMITER  //
mysql> CREATE  PROCEDURE  prosedur3(a SMALLINT,   OUT  b  INT)
        -> BEGIN
        -> DECLARE  e  INT;
        -> SET  e=a+a;
        -> SET  b=e;
        -> END
        -> // Query OK, 0 rows affected (0.01 sec)
mysql> DELIMITER   ;

Pada contoh diatas dideklarasikan variabel lokal bernama e dengan tipe data INT. Variabel e tersebut hanya digunakan diantara keyword BEGIN dan END.

Flow Control
Keyword Flow control juga dapat ditambahkan pada pada prosedur tersimpan. Beberapa keyword Flow control yang dapat digunakan antara lain
- IF
   IF digunakan untuk menyeleksi beberapa kondisi nilai.
- CASE WHEN
   Perintah CASE WHEN bekerja hampir sama seperti perintah IF yang
   digunakan untuk menyeleksi beberapa kondisi nilai.
- LOOP, LEAVE dan ITERATE
   Perintah LOOP digunakan untuk mengulang perintah secara terus
   menerus sampai menemui perintah LEAVE.
      [label_awal:] LOOP
         Kumpulan_perintah
      END LOOP [label_akhir]
Perintah LOOP diawali dan diakhiri dengan karakter label. Perintah LOOP akan terus mengulang perintah  yang terdapat dalam kumpulan_perintah, dan untuk menghentikan pengulangan perintah yang terjadi di dalam LOOP menggunakan perintah LEAVE, sdangkan perintah ITERATE digunakan untuk meneruskan perintah.
- REPEAT
  Sama seperti LOOP perintah REPEAT digunakan untuk mengulang
  sebuah perintah.
        [label_awal] REPEAT
            Kumpulan_perintah UNTIL
       kondisi END REPEAT [label_akhir]
  Perintah REPEAT akan terus mengulang perintah sampai nilai dari
  kondisi keyword UNTIL terpenuhi.
  Contoh penggunan REPEAT :
        Label1: REPEAT
        SET b = b+1; UNTIL b > a END REPEAT label1;
  Perintah REPEAT diatas akan mengulang perintah SET b = b+1
  sampai nilai dari variabel b lebih besar daripada nilai variabel a.
- WHILE
  WHILE bekerja hampir sama dengan REPEAT,
   tetapi dalam perintah WHILE,  kondisi disimpan di bagian awal.
   Perintah ini berbeda dengan REPEAT yang disimpan di bagian akhir
   dan mungkin akan menghasilkan hasil yang berbeda.
       [label_awal:] WHILE kondisi DO 
             Kumpulan_perintah
        END WHILE [label_akhir]
  Contoh penggunaan perintah WHILE Label1:
  WHILE b > a DO
    SET b = b + 1; END WHILE label1;
  Perintah WHILE akan terus mengulang perintah SET b = b+1;
  sampai nilai dari variabel b lebih besar daripada nilai dari variabel a.

Contoh penggunaan flow control pada prosedur tersimpan :
mysql> DELIMITER  //
mysql> CREATE  PROCEDURE  prosedur4(a INT,   OUT  b  INT)
-> BEGIN
-> labell: LOOP
-> SET  a =  a +  2 ;
-> IF  a <  16 THEN  ITERATE  labell;
-> END  IF;
-> LEAVE labell;
-> END LOOP labell;
-> SET b = a;
-> END

-> // Query OK, 0 rows affected (0.03 sec)

mysql> DELIMITER ;

Perintah LOOP diatas akan terus mengulang perintah SET a = a + 2 sampai nilai dari variabel a bernilai 16.

Terima kasih, semoga bermanfaat.

No comments:

Post a Comment