AD (728x60)

Teknik Informatika

Diberdayakan oleh Blogger.

Total Pageviews

AD (728x90)

Blogger news

Sample Text

Definition List

Text Widget

About me

Formulir Kontak

Followers

Translate

Feature (Side)

Pages

Senin, 08 Desember 2014

LAPORAN PRAKTIKUM VIII "FUNGSI, PL/PGSQL & TRIGGER"

Share & Comment
BAB VIII

FUNGSI, PL/PGSQL dan TRIGER



A.    Landasan Teori

1.      Pendukung Fungsi

PostgreSQL memiliki fungsi yang dapat mengubah suatu nilai dalam suatu kolom atau barismenjadi huruf besar. Fungsi tersebut bernama upper(nama_kolom), berfungsi memanggilfungsi upper dengan nama_kolom sebagaii argumen sehingga menghasilkan nilai padakolom dalam huruf besar. Berikut Struktur SQL untuk menampilkan data dalam huruf besar semua :
SELECT upper ([nama kolom]) FROM [nama tabel];

Berikut struktur SQL untuk menampilkan data dimana huruf pertama saja yang besar :

SELECT initcap ([nama kolom]) FROM [nama tabel];
 1.      Fungsi




Fungsi  SQL adalah  sebuah  kumpulan  query,  biasanya  queryang  detail  dan

panjang  yang  dibungkus  menjadi  satu  dan  disimpan  dalam  database  dan  kemudian apabil diperluka hany tingga mengaksesny tanpa   mengetika query   detail. Sedangkan untuk memunculkan fungsi dapat menggunakan query \df.
Ada beberapa konsep yang menarik dari fungsi antara lain:

 Bahasa  yang  dipakai  dapat  didefenisikan  sendiri  dengan  tersedianya  parameter

LANGUAGE, tanpa harus mengkompilasi ulang PostgreSQL.

•   Kit dapa membua dua   bua fungs denga nam yan sam namun parametermasukkannya yang berbeda, baik tipe data maupun jumlahnya.


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.

Berikut contoh sederhana pembuatan fungsi SQL untuk perkalian dari tiga inputan :

db_personal=> CREATE FUNCTION perkalian (FLOAT, FLOAT, FLOAT)
db_personal-> RETURNS FLOAT

db_personal-> AS 'SELECT ($1 + $2) * $3;'
db_personal-> LANGUAGE 'sql';
CREATE

db_personal=> SELECT perkalian (10,10,10);
perkalian

-----------
200
(1 row)
Contoh yang lain dalam pembuatan fungsi SQL untuk mencari jumlah pegawai dari tabel pegawai berikut :

ID
NAMA
ALAMAT
NO.TELP
JABATAN
Gaji
1
Hendro
Solo
081223300
Teknisi
900000
2
Tika
Semarang
0897735357
Sekretaris
2000000
3
Wijaya
Jogjakarta
0865433225
Kepala
3000000
4
Dodi
Banyuwangi
076544677
Teknisi
1000000
Berikut kode SQL nya :

Create function jumlah_pegawai() Returns bigint

As select count(*) as jumlah_pegawai from pegawai;’ Language sql’;
Maka hasilnya sebagai berikut :

Select jumlah_pegawai(); Jumlah_pegawai
----------------------
4
(1 row)




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’;

2.   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);




Berikut ini implementasi dari contoh penggunaan fungsi dengan bahasa PL/PGSQL:

db_personal=> CREATE FUNCTION pl_caripegawai (integer)
db_personal-> RETURNS text
db_personal-> AS 'DECLARE hasil TEXT;
db_personal'> BEGIN

db_personal'> SELECT INTO hasil nama as nama_mahasiswa
db_personal'> FROM pegawai db_personal'> WHERE id = $1; db_personal'> RETURN hasil; db_personal'> END;'
db_personal-> LANGUAGE 'plpgsql'; CREATE

db_personal=> SELECT pl_caripegawai (1);
pl_caripegawai
-----------------
Hendro

(1 row)
db_personal=> SELECT pl_caripegawai (2);
pl_caripegawai
-------------------- Tika
(1 row)
Contoh berikut menunjukkan query percabangan yang akan menampilkan nilai terkecil

dari dua buah parameter  :

create function percabangan (x integer,y integer)
returns integer
as ‘declare nilai_terkecil integer;
begin
if  x < y then
select into nilai_terkecil x;

else
select into nilai_terkecil y;
end if;
return nilai_terkecil;
end;’
language ‘plpgsql’;
Hasil sebagai berikut :

Select percabangan (300,250); Percabangan
-----------------
250
(1 row)


Contoh berikut menunjukkan query perulangan yang akan menampilkan akumulasi dari jumlah perulangan  :
Create function perulangan (a integer,b integer) Returns integer

As ‘ declare nilai_awal integer default a;
Hasil integer default 0; Begin

Loop

If nilai_awal > b then

Exit; End if;
Hasil := hasil+nilai_awal; Nilai_awal := nilai_awal+1;

End loop;

Return hasil;
End;’


Language ‘plpgsql’; Hasilnya sebagai berikut : Select perulangan (1,5); Perulangan
----------------
15
1 (row)
2.      Triger

Trigger digunakan untuk menyisipkan sebuah fungsi pada saat suatu record di- INSERT UPDAT da DELETE Trigge sanga idea untuk   mengece 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 Cir kha dari   fungs yang   diperuntukka untuk   trigge adalah menghasilka output   bertipe   OPAQUE Tipe   opaque   adala sebua tipe   yang menginformasikan pada database bahwa fungsi tersebut tidak menghasilkan satu dari tipe data yang ditetapkan SQL dan tidak secara langsung dapat digunakan dalam statemen SQL. Language (bahasa) PL/PGSQL dapat digunakan untuk trigger procedure, fungsi untuk trigger ini memiliki beberapa variabel khusus yang terdeklarasi secara otomatis. 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.
Berikut ini beberapa contoh penggunaan fungsi sebagai trigger procedure:

Contoh : trigger berikut ini memastikan isi field atau kolom nama pada tabel anggota

selalu huruf besar. 

langkah pertama buatlah fungsinya terlebih dahulu :

db_personal=> CREATE FUNCTION tes_trigger()
db_personal-> RETURNS opaque db_personal-> AS 'BEGIN

db_personal'> NEW.nama := UPPER(NEW.nama);
db_personal'> RETURN NEW;
db_personal'> END;'
db_personal-> LANGUAGE 'plpgsql';
CREATE


Kemudian lanjutkan dengan pembuatan trigger yang berfungsi untuk memanggil fungsi secara otomatis ketika kita melakukan INSERT ataupun UPDATE pada tabel anggota.
db_personal=> CREATE TRIGGER tes1_trigger db_personal-> BEFORE INSERT
db_personal-> ON anggota
db_personal-> FOR EACH ROW
db_personal-> EXECUTE PROCEDURE tes_trigger(); CREATE

cobalah INSERT beberapa data ke dalam tabel anggota:

db_personal=> INSERT INTO anggota (id, nama)
db_personal-> VALUES (26, 'andhie');

INSERT 70831 1
db_personal=> INSERT INTO anggota
db_personal-> VALUES (83, 'rWatia');
INSERT 70832 1

tampilkan isi dari tabel anggota, hasilnya seperti pada tabel di bawah ini. Jadi setiap data yang kita INSERT walaupun dalam penulisannya menggunakan huruf kecil


namun secara otomatis trigger akan memanggil fungsi yang bertugas untuk mengganti setiap data yang masuk agar hasilnya nanti selalu menjadi huruf besar:
db_personal=> SELECT * FROM anggota;
id | nama
--------+-------------
26 | ANDHIE
83 | RWATIA
(2 rows)

B. 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 !

PSQL
MySQL



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

PSQL

MySQL

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

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


Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut !

PSQL
MySQL



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

PSQL
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.
MySQL





C. Perbedaan Antara PSQL dan MySQL pada Bab Ini
Banyak perbedaan diantara postgreSQL dan MySQL dalam bab ini, utamanya dalam hal penulisan. Dalam pembuatan fungsi,  MySQL harus diikuti oleh delimiter agar bisa dibuat. Beirkut perbedaannya.
-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).
4. Insert seperti biasanya.
      -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).
5. Untuk melakukan insert terlebih dahulu mendeklaraskan variabelnya.
                 D.    Kesimpulan, Kritik, Saran, dan Manfaat
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. Namun, semua dapat dikerjakan dengan mudah.
Semoga sedikit ilmu yang kami tularkan nantinya akan dapat mempermudah pembaca dalam memcahkan masalah-masalah terutama dalam pembahasan di bab ini. 
               E.     Daftar Pustaka
         Modul Praktikum Desain Basis Data 2014
         http://www.wirabumisoftware.com/in/kostumasi-openbravo/postgresqldevtutorial/25-pgsqlid/26  plpgsql
         http:// Badiyanto's_Blog.blogspot.com/Tutorial/MySQL
         http://87wz.blogspot.com/2013/12/trigger-pada-mysql.html
Tags:

Written by

We are Creative Blogger Theme Wavers which provides user friendly, effective and easy to use themes. Each support has free and providing HD support screen casting.

0 komentar:

Posting Komentar

 

Popular Content

Recent Posts

Why to Choose RedHood?

Mahasiswa Teknik Informatika UIN Maulana Malik Ibrahim Malang
Copyright © Light-Education | Designed by Templateism.com