A. Landasan Teori
1.
Pendukung Fungsi
PostgreSQL
memiliki fungsi yang dapat mengubah suatu nilai dalam suatu kolom atau baris menjadi
huruf besar. Fungsi tersebut bernama upper(nama_kolom), berfungsi memanggil fungsi upper
dengan nama_kolom sebagai argumen
sehingga menghasilkan nilai pada kolom dalam huruf besar.
2.
Fungsi
Fungsi
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 konsep yang menarik dari fungsi antara lain:
- Bahasa yang dipakai dapat didefenisikan sendiri dengan tersedianya parameter LANGUAGE, tanpa harus mengkompilasi ulang PostgreSQL.
- Kita dapat membuat dua buah fungsi dengan nama yang sama namun parametermasukkannya yang berbeda, baik tipe data maupun jumlahnya.
- Nama Fungsi
- Nomor dari fungsi argument
- Tipe data dari setiap argument
- Tipe dari hasil fungsi
- Fungsi action
- Bahasa yang digunakan oleh fungsi action
3. 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 :
- Meningkatkan kinerja karena mengurangi pengiriman kode dari klien ke server.
- Meningkatkan keamanan karena pengaksesan data tertentu ditangani dalam server.
- 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 :
a. Pembuatan fungsi
CREATE
[OR REPLACE] FUNCTION nama_fungsi (
argtype , ... ])
RETURNS
tipe_data
AS ‘definisi’
LANGUAGE
‘plpgsql’;
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 ... );
4. Trigger
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. Ciri khas dari fungsi yang diperuntukkan untuk trigger
adalah menghasilkan output bertipe OPAQUE. Tipe opaque
adalah sebuah 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.
B. Hasil Praktikum
- 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 !
- Buatlah fungsi untuk mencari alamat mahasiswa dari tabel mahasiswa berdasarkan nama mahasiswa. Kemudian jalankan dengan perintah SELECT !
- Buatlah fungsi untuk menghitung nilai dengan menggunakan bahasa pl/sql ! Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut !
- Buatlah fungsi menggunakan pl/pgsql untuk mencari bilangan ganjil atau genap dari bilangan yang diinputkan. Kemudian jalankan dengan perintah SELECT !
- Tambahkan kolom modifikasi pada tabel mahasiswa. Dimana setiap ada insert atau update maka tanggal pada kolom modifikasi akan menunjukkan tanggal perubahan tersebut dilakukan.
1.1 Langkah pertama membuat fungsi untuk mengkonversi suhu dari fahrenheit ke celcius menggunakan perintah
CREATE FUNCTION konversi(FLOAT)
RETUNRS FLOAT
AS ‘SELECT (($1 – 32)/1.8);’
LANGUAGE ‘sql’;
Setelah membuat fungsi, cek dengan menggunakan perintah
SELECT konversi(27);
1.2 Selanjutnya membuat fungsi lagi tetapi untuk mencari alamat mahasiswa melalui nama mahasiswa menggunakan perintah
CREATE FUNCTION
alamat_mh(nama VARCHAR)
RETUNRS VARCHAR
AS ‘SELECT alamat_mah FROM mahasiswa;’
LANGUAGE ‘sql’;
Setelah membuat fungsi, cek dengan menggunakan perintah
SELECT alamat_mh(‘putri’);
1.3 Kemudian membuat fungsi untuk menghitung nilai menggunakan perintah
CREATE FUNCTION hitung (INTEGER)
RETURNS text
AS 'DECLARE hasil text;
BEGIN
CASE
WHEN $1>100 AND $1<0
THEN SELECT INTO hasil (''NILAI SALAH'');
WHEN $1>=90 THEN SELECT
INTO hasil (''NILAI A'');
WHEN $1>=70 AND $1<90 THEN SELECT INTO
hasil (''NILAI B'');
WHEN $1>=60 AND $1<70
THEN SELECT INTO hasil (''NILAI C'');
WHEN $1>=50 AND $1<60 THEN SELECT INTO
hasil (''NILAI D'');
WHEN $1>=0 AND $1<50 THEN SELECT INTO
hasil (''NILAI E'');
END CASE;
RETURN hasil;
END;'
LANGUAGE 'plpgsql';
Setelah membuat fungsi cek dengan menggunakan perintah
SELECT hitung (95);
1.4 Lalu membuat fungsi mencari nilai ganjil genap menggunakan perintah
CREATE FUNCTION
ganjil_genap (INTEGER)
RETURNS text
AS 'DECLARE hasil text;
BEGIN
CASE
WHEN $1%2=0 THEN SELECT INTO hasil
(''Genap'');
ELSE
SELECT INTO hasil (''Ganjil'');
END CASE;
RETURN hasil;
END;'
LANGUAGE 'plpgsql';
Setelah membuat fungsi, cek dengan menggunakan perintah
SELECT ganjil_genap (9);
1.5 Kemudian sebelum membuat trigger kita harus menambahan kolom pada tabel mahasiswa dahulu menggunakan perintah
ALTER TABLE mahasiswa ADD COLUMN modifikasi DATE;
setelah berhasil menambahkan kolom, lanjutkan dengan membuat fungsi menggunakan perintah
CREATE FUNCTION modifikasi()
RETURNS OPAQUE
AS 'BEGIN new.nama :=
curent_date;
RETURN NEW;
END;'
LANGUAGE 'plpgsql';
Kemudian buat fungsi trigger menggunakan perintah
CREATE TRIGGER modifikasi BEFORE INSERT OR UPDATE ON mahasiswa FOR EACH ROW
EXECUTE
PROCEDURE modifikasi();
Setelah berhasil, cek dengan memasukkan data baru ke tabel mahasiswa dengan perintah
INSERT INTO MAHASISWA values (20, 'besari’, ’tangerang’, ’121314’, ’L’, 1);
kemudian lihat menggunakan perintah
SELECT*FROM mahasiswa;
2. Menggunakan MySQL
2.1 Pada MySQL perintah yang digunakan berbeda, yakni menentukan delimiter dengan menggunakan tanda "// ". Lalu membuat fungsi yang sedikit berbeda dengan postgre dengan perintah
CREATE FUNCTION konversi_suhu2
($1
FLOAT) RETURNS
FLOAT RETURN (($1-32)/1.8);
//
Setelah membuat fungsi, cek dengan menggunakan perintah
select konversi_suhu2(20);
//
2.2 Selanjutnya membuat fungsi lagi tetapi untuk mencari alamat mahasiswa melalui nama mahasiswa menggunakan perintah
CREATE FUNCTION alamat02 (nama VARCHAR(27));
RETURNS VARCHAR(27)
BEGIN
DECLARE hasil VARCHAR(20);
SELECT alamat_mah INTO hasil FROM mahasiswa WHERE nama_mah=nama; RETURN hasil;
END;
//
Kemudian coba gunakan fungsi yang telah dibuat
SELECT alamat02
(‘fiersa’);
//
2.3 Kemudian membuat fungsi untuk menghitung nilai menggunakan perintah
CREATE FUNCTION hitungnilai (nilai INTEGER)
RETURNS VARCHAR(27)
AS 'DECLARE hasil text;
BEGIN
DECLARE hasil VARCHAR(27);
IF nilai>100 OR nilai<0
THEN SELECT "NILAI SALAH" INTO hasil;
ELSEIF nilai>=90 THEN SELECT
INTO hasil "NILAI A";
ELSEIF nilai>=70 OR nilai<90 THEN SELECT "NILAI B" INTO
hasil;
ELSEIF nilai>=60 OR nilai<70
THEN SELECT "NILAI C" INTO hasil;
ELSEIF nilai>=50 OR nilai<60 THEN SELECT "NILAI D" INTO
hasil ;
ELSE SELECT "NILAI E" INTO
hasil;
END IF;
RETURN hasil;
END;
//
Setelah membuat fungsi cek dengan menggunakan perintah
SELECT hitungnilai (72);
//
2.4 Lalu membuat fungsi mencari nilai ganjil genap menggunakan perintah
CREATE FUNCTION
ganjilgenap (nilai INTEGER)
RETURNS VARCHAR(27)
BEGIN
DECLARE hasil VARCHAR(27);
IF nilai%2=0 THEN SELECT "Genap" INTO hasil;
ELSE SELECT "Ganjil" INTO hasil;
END IF;
RETURN hasil;
END;
//
Setelah membuat fungsi, cek dengan menggunakan perintah
SELECT ganjilgenap (27);
//
2.5 Kemudian sebelum membuat trigger kita harus menambahan kolom pada tabel mahasiswa dahulu menggunakan perintah
ALTER TABLE mahasiswa ADD COLUMN modifikasi DATE;
setelah berhasil menambahkan kolom, lanjutkan dengan membuat fungsi trigger menggunakan perintah
CREATE TRIGGER modifikasi1
BEFORE UPDATE ON mahasiswa FOR EACH ROW
BEGIN
SET new.modifikasi=SYSDATE(); END;
//
CREATE TRIGGER modifikasi2
BEFORE UPDATE ON mahasiswa FOR EACH ROW
BEGIN
SET new.modifikasi=SYSDATE();
END;
//
Setelah berhasil, cek dengan memasukkan data baru ke tabel mahasiswa dengan perintah
INSERT INTO mahasiswa (nim_mah, nama_mah,
alamat, no_telp, id_fak, gender_mah) VALUES (22, 'fahreza’, ’jepara’, ’034110111’,5, ’L’);//
kemudian lihat menggunakan perintah
SELECT*FROM mahasiswa;
//
//
C. Kesimpulan, Kritik dan Saran
Dari percobaan pada kedua DBMS diatas bisa disimpulkan banyak sekali perbedaan antara keduanya yang bisa dilihat dari perintah yang digunakan dari awal sampai akhir yang hanya memiliki sedikit persamaan. Misalkan pada MySQL menggunakan delimiter yang tujuannya agar pada saat pembuatan prosedur tidak terganggu. Karena secara default MySQL menggunakan titik-koma sebagai delimiter dan pada pemograman procedural MySQL menggunakan titik-koma juga maka diperlukan delimiter lain selain titik-koma. Perlu diketahui delimiter adalah suatu tanda yang menyebabkan mesin MySQL mengeksekusi sql yang kita inputkan. Sedangkan pada PostgreSQL tidak. Lalu penggunaan bahasa PL/PGSQL pada PostgreSQLKarena tidak ada yang sempurna, maka jika ada kurang bahkan salah pada penulisan diharapkan memberikan komentar dibawah :) Terima kasih atas kunjungan pembaca dan jangan lupa selalu mencoba, mencoba dan mencoba!
Tidak ada komentar:
Posting Komentar