FUNGSI, PL/SQL, dan TRIGER

­­­­­­Assalamu’alaikum Wr. Wb.

Segala puji saya haturkan kepada Allah swt yang telah memberi saya kesehatan sehingga dapat mengerjakan Laporan Praktikum Desain Basis Data ini dengan tepat waktu. Untuk lebih jelasnya mari kita simak langsung materi di bawah ini.

FUNGSI DALAM MYSQL


Store Procedure dan Function adalah rangkaian program yang disimpan dalam database dan dapat dipanggil oleh program lain atau melalui SQL Prompt. Stored procedured ditulis dalam bentuk suatu Script. Function adalah kumpulan-kumpulan SQL berupa rountine yang di simpan dalam database MySQL Server. Biasanya function ini di kombinasikan dengan store pocedure atau bisa juga tidak di kombinasikan dengan store procedure.

  • Keuntungan

  • Cepat, kompilasi dilakukan di Database (kadang disebut “pre -compilation”) sehingga mengurangi traffic.

  • Adanya pemisahan antara database access logic dengan application logic sehingga program aplikasi menjadi lebih sederhana dan lebih ringkas (thin client concept).

  • Berupa obyek dalam database, sehingga menghilangkan ketergantungan terhadap bahasa program yang digunakan.

  • Bersifat Portable, jika bisa berjalan di database tsb maka dipastikan jika database bisa terinstall di manapun maka store procedure pasti bisa dijalankan

  • Bentuk Umum


Sintak untuk membuat :

Procedure :

CREATE PROCEDURE sp_name ([proc_parameter [,...]])

[characteristic ..]

routine_body

Function :

CREATE FUNCTION sp_name ([func_parameter [,...]])

RETURNS type

[characteristic ..]

routine_body

Keterangan :

  • Proc_parameter :


[IN | OUT | INOUT] param_name type

  • Func_parameter :


Param_name type

  • Type :


Semua type data yang valid di MySQL.

  • Characteristic:


LANGUAGE SQL

[NOT] DETERMINISTIC

{CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }

SQL SECURITY {DEFINER | INVOKER }

COMMENT ‘string’

  • Routine_body:


Statement SQL procedure yang valid.

Berikut ini query membuat FUNCTION :

DELIMITER $$

CREATE FUNCTION sf_tampil_siswa_kelas (p_kelas int)

RETURNS INT DETERMINISTIC

BEGIN

DECLARE jml INT;

SELECT COUNT(*) AS jml_kelas INTO jml FROM tb_siswa

WHERE kelas = p_kelas;

RETURN jml;

END$$

DELIMITER ;

penjelasannya sebagai berikut:

  • DELIMITER =adalah untuk memberi tahu kepada myql soal delimiter yang digunakan, secara default menggunakan ; jadi bila ada tanda ; mysql akan mengartikan akhir dari statement, pada contoh di atas delimeter yang digunakan $$ jadi akhir statementnya adalah $$.

  • CREATE FUNCTION =adalah header untuk membuat function.

  • RETURNS= adalah untuk menentukan tipe data yang di return-kan oleh function.

  • DETERMINISTIC/ NOTDETERMINISTIC = adalah untuk menentukan yang bisa menggunakan function ini adalah user pembuatnya saja (determinisric) atau user siapa saja (not determinisric).

  • BEGIN END= adalah body dari function jadi semua SQL nya di tulis disini.


contoh pemanggilannya seperiti dibawah ini:

select sf_tampil_siswa_kelas("2");

sebuah function hanya bisa memberikan return berupa nilai saja dan tidak bisa berupa resutlset. Untuk penulisan DETEMINISTIC bisa ditulis secara implisit dengan memberikan setting global pada mysql dan secara default benilai NOT DETEMINISTIC , caranya dibawah ini:

SET GLOBAL log_bin_trust_function_creators = 1;

FUNGSI PL/PGSQL PL/PGSQL


merupakan bahasa yang lain untuk membuat sebuah fungsi, biasanya bahasa ini digunakan untuk menangani fungsi yang lebih kompleks. Pl/pgsql sudah terdapat dalam instalasi PostgreSQL. Keuntungan penggunaan Fungsi PL/PGSQL :

  1. Meningkatkan kinerja karena mengurangi pengiriman kode dari klien ke server.

  2. Meningkatkan keamanan karena pengaksesan data tertentu ditangani dalam server.

  3. Meningkatkan konsistensi data saat sejumlah aplikasi memanggil prosedur yang sama.


Sebaliknya kelemahannya yaitu server akan lebih terbebani karena banyak proses yang harus ditangani. Sedangkan query PL/PGSQL agar lebih mudah di pahami akan dibagi menjadi 2 yaitu pembuatan fungsi dan pembuatan definisi.

  • Berikut Struktur pembuatan fungsi dalam pl/pgsql



  1. Pembuatan fungsi :


CREATE [OR REPLACE] FUNCTION nama_fungsi (  argtype , ... ])

RETURNS tipe_data

AS ‘definisi’

LANGUAGE ‘plpgsql’;

  1. Pembuatan definisi :


DECLARE nama_variable tipe_data  /* deklarasi variabel, type */

BEGIN  /* prosedural dan SQL masuk disini seperti select, update dan sebagainya*/

Return nama_variable /* blok ini yang wajib */

END;

  • Menghapus fungsi :


DROP FUNCTION nama_fungsi(paramater, parameter, parameter ... );

Contoh :  DROP FUNCTION pembagian(text);

TRIGER PADA MYSQL

Pernyataan CREATE TRIGGER digunakan untuk membuat trigger, termasuk aksi apa yang dilakukan saat trigger diaktifkan. Trigger berisi program yang dihubungkan dengan suatu tabel atau view yang secara otomatis melakukan suatu aksi ketika suatu baris di dalam tabel atau view dikenai operasi INSERT, UPDATE atau DELETE.

Query :

CREATE     [DEFINER = { user | CURRENT_USER }]

TRIGGER trigger_name trigger_time trigger_event

ON tbl_name FOR EACH ROW trigger_stmt

Keterangan :

  • [DEFINER = { user | CURRENT_USER }]: Definisi user yang sedang aktif, sifatnya opsional.

  • trigger_name: Nama trigger.

  • trigger_time: waktu menjalankan trigger. Ini dapat berupa BEFORE atau AFTER.


BEFORE: Membuat trigger diaktifkan sebelum dihubungkan dengan suatu operasi.

AFTER: Membuat trigger diaktifkan setelah dihubungkan dengan suatu operasi.

  • trigger_event: berupa kejadian yang akan dijalankan trigger.

  • trigger_event dapat berupa salah satu dari berikut:


INSERT : trigger diaktifkan ketika sebuah record baru disisipkan ke dalam tabel. Contoh: statemen INSERT, LOAD DATA, dan REPLACE.

UPDATE : trigger diaktifkan ketika sebuah record dimodifikasi. Contoh: statemen UPDATE.

DELETE : trigger diaktifkan ketika sebuah record dihapus. Contoh: statemen DELETE dan REPLACE.

Catatan : trigger_event tidak merepresentasikan statemen SQL yang diaktifkan trigger sebagai suatu operasi tabel. Sebagai contoh, trigger BEFORE untuk INSERT akan diaktifkan tidak hanya oleh statemen INSERT tetapi juga statemen LOAD DATA.

  • tbl_name: Nama tabel yang berasosiasi dengan trigger.

  • trigger_stmt: Statemen (tunggal atau jamak) yang akan dijalankan ketika trigger aktif.


Contoh yang akan dibahas adalah mencatat kejadian-kejadian yang terjadi beserta waktunya pada tabel mahasiswa, dan catatan-catatan tadi disimpan dalam tabel yang lain, misal log_mhs. Misalkan struktur tabel log_mhs adalah sebagai berikut.

mysql> describe log_mhs;

Contoh 1:

mysql> create trigger ins_mhs after insert on mahasiswa

-> for each row insert into log_mhs values('Tambah data',now());

mysql> insert into mahasiswa values('00631','Hanif','Kalasan','P01');

mysql> select * from log_mhs;

Dari contoh diatas dapat dilihat bahwa ketika satu record pada tabel mahasiswa disisipkan (insert), maka secara otomatis tabel log_mhs akan disisipkan satu record, yaitu kejadian ‘Tambah data’ dan waktu saat record pada tabel mahasiswa disisipkan.

HASIL PRAKTIKUM




  1. Buatlah fungsi konversi suhu dari Fahrenheit ke derajat celcius dengan rumus konversi sebagai berikut : celcius= (5*(nilai Fahrenheit-32))/9! Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut !


1

  1. Buatlah fungsi untuk mencari alamat mahasiswa dari tabel mahasiswa berdasarkan nama mahasiswa. Kemudian jalankan dengan perintah SELECT !


2

  1. Buatlah fungsi untuk menghitung nilai dengan menggunakan bahasa pl/sql !


tabel

Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut !

3

  1. Buatlah fungsi menggunakan pl/pgsql untuk mencari bilangan ganjil atau genap dari bilangan yang diinputkan. Kemudian jalankan dengan perintah SELECT !


4.1

4.2

  1. Tambahkan kolom modifikasi pada tabel mahasiswa. Dimana setiap ada insert atau update maka tanggal pada kolom modifikasi akan menunjukkan tanggal perubahan tersebut dilakukan.


5.1

5.2

5.3

5.4

5.5

5.6

PERBANDINGAN


 

  • PostgresSQL



  1. Perlu menuliskan Bahasa yang dipakai seperti pl pgsql.

  2. Pada tipe Char atau Varchar tidak perklu diberi ukuran.

  3. Tentang percabangan, setelah query if, atau else if serta else maka menggunakan select  into variable (values).



  • MySQL



  1. Tidak perlu menuliskan Bahasa yang dipakai dan bisa langsung meng eksekusi query.

  2. Pada tipe Char atau Varchar tidak diberi ukuran jika tidak maka akan error.

  3. Perlu adanya concat (nilai kembalian di akhir query).

  4. Tentang percabangan, setelah query if, atau else if serta else maka menggunakan then return concat (values).


KESIMPULAN


Berdasarkan apa yang telah kita pelajari pada praktikum ini tentang Fungsi, plpgsql dan trigger maka dapat disimpulkan bahwa antara PostgresSQL dengan MySQL sangatlah berbeda. Dan itu banyak juga perbedaannya.

Semoga sedikit ilmu yang kami tularkan nantinya akan dapat mempermudah pembaca dalam memecahkan masalah-masalah atau mungkin tugas-tugas pembaca sekalian.

DAFTAR PUSTAKA


 
loading...

0 Response to "FUNGSI, PL/SQL, dan TRIGER"

Post a Comment

.