FUNGSI, PL/SQL, dan TRIGGER MySQL

Assalamu'alaikum ..

Selamat datang lagi di blog saya, :)
Kali ini saya akan membahas tentang FUNGSI, PL/SQL, dan TRIGGER dalam DBMS MySQL.

Sedikit bocoran pada pembahasan kali ini kita akan belajar lebih lanjut tentang adanya fungsi, PL/SQL, dan Trigger yang berguna untuk menyimpan perintah sederhana untuk memunculkan suatu output yang kita inginkan dengan perintah sebelumnya yang telah kita buat. Masih bingung? lebih jelasnya akan saya terangkan dibawah ini. So, terus baca yaaa !! :D


DASAR TEORI

1. PL/SQL

PL/SQL adalah bahasa pemrograman yang merupakan perluasan dari Structured Query Lenguage (SQL). PL merupakan singkatan dari Prosedural Lenguage. PL/SQL merupakan sebuah bahasa pemrograman yang dipergunakan untuk mengakses data dalam basis data relasional. Bahasa ini secara umum digunakan untuk manajemen data relasional.

PL/SQL ini dapat dikatakan sebagai bahasa prosedural yang digunakan untuk mengoptimalkan pembuatan aplikasi database yang menggunakan database MySQL. Dalam PL/SQL dapat digunakan juga untuk memanipulasi data yang ada dalam database MySQl. Dalam bahasa ini juga dikenal sebagai mana perintah atau sintak yang digunakan dalam bahasa pemrograman, seperti : loop (perulangan), pemrosesan kondisi, variabel, operasi cursor, modularisasi, dan lain sebagainya.

Untuk dasar penulisan PL/SQL yaitu bisa dengan menggunakan FUNCTION, PROCEDURE, dan TRIGGER.


2. FUNGSI / FUNCTION dan PROCEDURE STORED

Function dan Stored Procedure merupakan fitur utam yang paling penting di MySQL 5. Function dan Stored Procedure merupakan suatu kumpulan perintah atau statement yang disimpan dan dieksekusi di server database MySQL. Dengan SP (Stored Procedure), kita dapat menyusun program sederhana berbasis sintaks SQL untuk menjalankan fungsi tertentu. Hal ini menjadikan aplikasi yang kita buat lebih efektif dan efisien. 

Stored Procedure dari segi bentuk dan sifatnya terbagi menjadi 2, yaitu FUNCTION dan PROCEDURE. Perbedaan utama antara funtion dan procedure adalah terletak pada nilai yang dikebalikan (di-return), sedangkan procedure tidak. 

>> Untuk sintak pembuatan Function yang secara umum sebagai berikut :

mysql> DELIMITER $$
mysql> CREATE FUNCTION nm_fungsi([parameter_fungsi[, ..]])
    -> RETURNS type
    -> BEGIN  /*start of block*/
    -> DECLARE nm_variabel type; /* variabel */
    -> SELECT nm_kolom   /* statement */
    -> INTO nm_variabel  /* statement */
    -> FROM nm_tabel WHERE value;  /* statement */
    -> RETURN nm_variabel;  /* statement */
    -> END $$  /* end of block */
    -> DELIMITER;

dan untuk memanggil perintah dari fungsi tersebut :

mysql> SELECT nm_fungsi([value]);

Keterangan :

  • DELIMITER : untuk memberi tahu kepada MySQL bahwa delimiter yang digunakan,secara default menggunakan semikolon (;) jadi bila ada tanda (;) MySQL akan mengartikan akhir dari statement, pada contoh diatas delimiter yang digunakan $$ jadi akhir statementnya adalah $$.
  • CREATE FUNCTION : header untuk membuat function.
  • RETURNS : untuk menentukan tipe data yang di return kan oleh function
  • DECLARE : untuk mendeklarasikan nama variabel yang dibuat dalam function
  • BEGIN . . END : body dari function atau statement, jadi semua SQL nya di tulis dalam perintah ini.



>> Untuk sintaks pembuatan Procedure secara umum sebagai berikut :

mysql> DELIMITER $$
mysql> CREATE PROCEDURE nm_procedure([IN|OUT|INOUT][parameter_prosedur])
    -> BEGIN
    -> SELECT [nm_kolom, ..]
    -> FROM nm_tabel
    -> WHERE value;
    -> END $$
    -> DELIMITER;

dan untuk memanggil perintah procedure tersebut :

mysql> CALL nm_procedure([value]);

Keterangan : 
  • IN :  parameter yang deigunakan sebagai masukan
  • OUT : parameter yang digunakan sebagai keluaran
  • INOUT : parameter yang digunakan sebagai masukan sekaligus keluaran

3. TRIGGER

Trigger merupakan nama objek database yang behubungan dengan sebuah tabel dan aktif ketika suatu kejadian muncul pada suatu tabel tertentu, dan juga merupakan sebuah blok PL/SQL yang berhubungan dengan table, view, schema atau database. Sebuah trigger akan dieksekusi secara implicit pada saat sebuah kejadian tertentu terjadi, seperti jika terjadi INSERT, UPDATE, dan DELETE pada suatu tabel.

Sintak pembuatan Trigger sebagai berikut :

mysql> CREATE [DEFINER = {user | CURRENT_USER}] TRIGGER nm_trigger
    -> trigger_time trigger_event
    -> ON nm_tabel
    -> FOR EACH ROW trigger_statemen;

Keterangan :

  • [DEFINER = {user|CURRENT_USER}] : Definisi user yang sedang aktif, sifatnya Opsional
  • trigger_time : waktu menjalankan trigger. Dapat berupa : 
            > BEFORE : membuat trigger aktif sebelum dihubungkan dengan suatu operasi
            > AFTER :  membuat trigger aktif sebelum dihubungkan dengan suatu operasi.

  • trigger_event : suatu kejadian yang akan dijalankan trigger. Dapat berupa :
           > INSERT : trigger akan diaktifkan ketika sebuah record/data baru dimasukkan kedalam tabel.
               > UPDATE : trigger akan diaktifkan ketika sebuah data dimodifikasi.
               > DELETE : trigger akan diaktifkan ketika sebuah data diahapus.

Contoh pembuatan trigger :

mysql> DELIMITER $$
mysql> CREATE TRIGGER 'triggerbeli'
    -> BEFORE INSERT 
    -> ON 'pembelian'
    -> FOR EACH ROW
    -> BEGIN
    -> UPDATE barang SET
    -> SET Stock = IF (ISNULL(Stock, 0, Stock)+new.JumlahBarang)
    -> WHERE KodeBarang = new.kodeBarang;
    -> END; $$
    -> DELIMITER ;

Hasil Percobaan :

1. Konversi nilai pada suhu :


2. Membuat function untuk mencari alamat mahasiswa berdasarkan nama dari tabel mahasiswa :



3. Membuat function untuk penilaian

  • Nilai > 100 atau Nilai < 0  --> Nialai Salah
  • Nilai >= 90                         --> Nilai A
  • 70 <= Nilai < 90                 --> Nilai B
  • 60 <= Nilai < 70                 --> Nilai C
  • 50 <= Nilai < 60                 --> Nilai D
  • 0 <= Nilai < 50                   --> Nilai E


4. Mencari bilangan ganjil / genap



5. Mengupdate data yang akan memunculakan tanggal saat data dimasukkan :




EVALUASI PERBEDAAN

Dari pembahasan diatas dan dengan penjelasan yang diberikan oleh dosen yang menggunakan DBMS PostgreSQL, saya dapat menemukan perbedaan yang cukup berbeda. Pada DBMS PostgreSQL jika akan membuat function atau pun trigger tidak ada perintah yang mengenalkan pada system, misal DELIMITER yang ada pada MySQ. DELIMITER ini berfungsi untuk mengenalkan pada system bahwa dia menggunkan delimiter untuk melakukan perintah kita, FUNCTION atau TRIGGER.

KESIMPULAN:
Dengan adanya perintah FUNCTION atau TRIGGER kita dapat melakukan pengaksesan data dengan cepat, misal mencari data.

3 comments:

Powered by Blogger.