A. LANDASAN TEORI
1.PengertianFungsi SQL adalah sebuah kumpulan query, biasanya query yang detail dan panjang yang dibungkus menjadi satu dan disimpan dalam database dan kemudian apabila diperlukan hanya tinggal mengaksesnya tanpa mengetikan query detail. Sedangkan untuk memunculkan fungsi dapat menggunakan query \df.
Ada beberapa faktor yang perlu diperhatikan dalam membuat fungsi antara lain:• Nama Fungsi• Nomor dari fungsi argument• Tipe data dari setiap argument• Tipe dari hasil fungsi• Fungsi action• Bahasa yang digunakan oleh fungsi action.
2. Fungsi PL/PGSQLPL/SQL MySQL adalah bahasa prosedural yang digunakan untuk mengoptimalkan pembuatanaplikasi database yang menggunakan database MySQL. Kata PL pada PL/SQL merupakan singkatan dari Procedural Language.
Keuntungan penggunaan Fungsi PL/PGSQL :a). Meningkatkan kinerja karena mengurangi pengiriman kode dari klien ke server.b). Meningkatkan keamanan karena pengaksesan data tertentu ditangani dalam server.c). 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/pgsqlCREATE [OR REPLACE] FUNCTION nama_fungsi ( variabel_input tipe_data)
RETURNS tipe_data
AS ‘definisi’
LANGUAGE ‘plpgsql’;2. Pembuatan definisi :
DECLARE nama_variable tipe_data
BEGIN
Return nama_variable
END;
- Menghapus fungsi :DROP FUNCTION nama_fungsi(paramater, parameter, parameter ... );Contoh : DROP FUNCTION pembagian(text);
3. Triger
Trigger digunakan untuk menyisipkan sebuah fungsi pada saat suatu record di-INSERT, UPDATE dan DELETE. Trigger sangat ideal untuk mengecek atau memodifikasi sebuah data pada kolom sebelum dimasukkan ke dalam database, sehingga sebuah fungsi dapat dipanggil setiap saat secara otomatis ketika sebuah row akan dimodifikasi.
Variabel tersebut antara lain:
- NEW: Variabel yang berisi nilai baru suatu record pada saat INSERT atau UPDATE, bertipe RECORD.
- OLD: Variabel yang berisi nilai lama suatu record pada saat UPDATE atau DELETE, juga bertipe RECORD.
Struktur Umum Triger :
CREATE OR REPLACE TRIGGER nama_trigger
(BEFORE | AFTER) statement ON nama
FOR EACH ROW
DECLARE
variabel
BEGIN
queri
Source : Musthafa, Aziz. Modul Praktikum Database 2014
B. TUGAS RUMAH
1. Membuat fungsi konversi suhu dari Fahrenheit ke derajat celcius dengan rumus konversi sebagai berikut : celcius= (5*(nilai Fahrenheit-32))/1,8
POSTGRE
Fungsi konversi di postgresql |
Kalo di mysql, sintaks yang dituliskan berbeda dengan yang di postgre. Disini, saya menemukan dua cara dalam membuat fungsi konversi.
Yang kedua, pakai delimiter dengan sintaks body plsql lengkap dengan begin, declare dan end.
POSTGRE
isi dari tabel mahasiswa |
membuat fungsi cari_alamat pada postgresql |
MYSQL
membuat fungsi cari_alamat pada mysql |
3. Membuat fungsi untuk menghitung nilai dengan menggunakan bahasa pl/sql
POSTGRE
fungsi untuk mencari keterangan nilai di postgresql |
MYSQL
fungsi untuk mencari keterangan nilai di mysql |
4.Buatlah fungsi menggunakan pl/pgsql untuk mencari bilangan ganjil atau genap dari bilangan yang diinputkan. Kemudian jalankan dengan perintah SELECT.
Range
|
Keterangan
|
Nilai > 100 atau Nilai<0
|
Nilai 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
|
POSTGRE
fungsi untuk mencari bilangan genap atau ganjil di postgresql |
fungsi mencari bilangan genap dan ganjil di mysql |
5. Tambahkan kolom modifikasi pada tabel mahasiswa. Dimana setiap ada insert atau update maka tanggal pada kolom modifikasi akan menunjukkan tanggal perubahan tersebut dilakukan.
POSTGRE
menambah field modifikasi pada tabel mahasiswa |
Di Postgresql, untuk membuat trigger, dibutuhkan fungsi terlebih dahulu. Sehingga, kita perlu membuat fungsi dulu, kemudian membuat triggernya
Membuat fungsi untuk trigger di PostgreSql |
Membuat trigger di Postgresql |
Fungsi syntax execute procedure digunakan untuk menjalankan fungsi yang telah dibuat pada trigger. Keudian, hasilnya akan muncul setelah kita menginsertkan data baru pada tabel mahasiswa.
Hasil dari data yang telah di insertkan |
MYSQL
membuat tabel baru pada mysql |
Membuat trigger pada mysql. Disini, kita langsung membuat trigger tanpa harus membuat fungsi seperti yang ada di postgresql.
membuat trigger pada mysql |
C. PERBANDINGAN POSTGRESQL VS MYSQL
1. Beda dalam struktur umum pl/pgsql.
a)POSTGRE :
CREATE FUNCTION nama_fungsi (variabel_input, tipe_Data)
RETURNS tipe_data
AS 'definisi'
language 'plpgsql;
b)MYSQL
CREATE FUNCTION nama_fungsi (variabel_input, tipe_Data)
RETURNS tipe_data
definisi
2.Beda dalam pembentukan definisi
a) POSTGRE
DECLARE variabel_output tipe_data
BEGIN
queri;
RETURN variabel_output
END;
b) MYSQL
BEGIN
DECLARE variabel_output;
queri;
RETURN variabel_output;
END
3. Beda dalam penulisan string query select
a) POSTGRE
SELECT INTO variabel_hasil(operasi atau string);
*string disini diapit oleh petik satu dua kali
b) MYSQL
SELECT (operasi atau string) INTO variabel_hasil;
*string disini diapit oleh petik dua
4.Beda dalam pembuatan triger
a) POSTGRE : pembuatan triger didahului dengan pembuatan fungsi
b) MYSQL : tidak pake pembuatan fungsi terlebih dahulu
5. Tipe Data Opaque
a) POSTGRE : pendeklarasian tipe data opaque untuk triger
b) MYSQL : tidak memakai pendeklarasian tipe data opaque
6. Penggunaan Percabangan
a) POSTGRE : IF .... ELSIF.... END IF
b) MYSQL : IF.... ELSEIF.....END IF
7. Beda dalam penulisan panjang tipe data
a) POSTGRE : tidak harus dituliskan panjang tipe data
b) MYSQL : harus dituliskan panjang tipe data
D. KESIMPULAN
Dan akhirnya, kita dapat menyimpulkan dari hasil praktikum kali ini bahwa fungsi dalam sebuah DBMS sangat membantu kita dalam mengakses queri yang telah disimpan dalam fungsi tersebut. Jadi, kita hanya menuliskan satu kali queri saja.
FungsiPL/PGSQL dalam DBMS MySql dan PostgreSQL berbeda penulisan syntaxnya. Demikian pula dalam pembuatan triger, dalam DBMS mysql dan postgre memiliki struktur yang berbeda.
Modul VIII FUNGSI, PL/PGSQL, TRIGER