Statement IF
Satu Kondisi (IF-THEN)
IF kondisi THEN
statemen-statemen;
END IF;
Pada struktur ini, PL/SQL hanya akan mengecek sebuah kondisi. Apabila kondisi tersebut terpenuhi (bernilai TRUE) maka statemen-statemen dalam blok pemilihan tersebut akan dieksekusi terlebih dulu sebelum dilanjutkan ke statemen di bawah blok pemilihan. Akan tetapi bila kondisi tidak terpenuhi (bernilai FALSE) maka eksekusi akan langsung berpindah ke statemen di bawah blok pemilihan.
Dua Kondisi (IF-THEN-ELSE)
IF kondisi THEN
statemen-statemen A;
ELSE
statemen-statemen B;
END IF;
Pada struktur ini, perlu didefinikan kondisi khusus untuk mengatasi apabila kondisi yang didefinisikan pada blok IF tidak terpenuhi. Kondisi khusus tersebut diletakkan pada bagian ELSE.
Apabila kondisi IF terpenuhi (bernilai TRUE) maka statemen-statemen A akan dieksekusi terlebih dulu sebelum dilanjutkan ke statemen yang berada di bawah blok pemilihan. Bila kondisi IF tidak terpenuhi (bernilai FALSE) maka statemen-statemen B yang akan dieksekusi terlebih dulu sebelum dilanjutkan ke statemen yang berada di bawah blok pemilihan.
Tiga Kondisi atau Lebih Kondisi (IF-THEN-ELSIF)
IF kondisi_1 THEN
statemen-statemen A;
ELSIF kondisi_2 THEN
statemen-statemen B;
...
ELSIF kondisi_n THEN
statemen-statemen N;
[ELSE
statemen-statemen lain;]
END IF;
Pada struktur ini, minimal terdapat dua kondisi yang harus diperiksa dan satu tambahan kondisi khusus yang akan mengatasi kejadian dimana semua kondisi yang didefinisikan tidak terpenuhi (bernilai FALSE).
Mula-mula dilakukan pengecekan terhadap kondisi_1, jika TRUE maka statemen-statemen A akan dieksekusi dan kemudian mengeksekusi statemen yang berada di bawah blok pemilihan. Tapi bila FALSE maka akan dilakukan pengecekan selanjutnya untuk kondisi_2. Jika kondisi_2 TRUE maka statemen-statemen B akan dieksekusi sebelum statemen di bawah blok pemilihan dieksekusi, dan seterusnya. Apabila seluruh kondisi ELSIF tidak terpenuhi, maka statemen pada blok ELSE yang akan dieksekusi.
Contoh Penggunaan Statement IF
declare
nama varchar(50) := '&Nama';
harga_buku number(10) := '&HargaBuku' ;
diskon number(5) := '&Diskon';
total number(5);
begin
total := harga_buku - ((harga_buku*diskon)/100);
dbms_output.put_line('Selamat Datang');
dbms_output.put_line('Harga yang harus dibayar = Rp. '||total);
if (diskon < 20) then
dbms_output.put_line('Pelit amat sih');
elsif (diskon >= 20) or (diskon < 50) then dbms_output.put_line('Biasa aja ah');
else dbms_output.put_line('wah baik banget');
end if;
end;
/
declare
nama varchar(50) := '&Nama';
jenis_kelamin varchar(3) := '&JenisKelamin';
umur number(5) := '&Umur';
begin
if (jenis_kelamin ='p') and (umur < 20) then
dbms_output.put_line('mba '||nama||' Belajar yang bener');
elsif (jenis_kelamin ='p') and (umur > 60) then
dbms_output.put_line('mba '||nama||' Inget mati');
elsif (jenis_kelamin ='p') and (umur >= 20) and (umur <= 60) then
dbms_output.put_line('mba '||nama||' Inget mati');
elsif (jenis_kelamin ='p') and (umur >= 20) and (umur <= 60) then
dbms_output.put_line('mba '||nama||' Buruan nikah bisi expired!');
elsif (jenis_kelamin ='l') and (umur < 25) then
dbms_output.put_line('mas '||nama||' Belajar yang bener');
elsif (jenis_kelamin ='l') and (umur > 60) then
dbms_output.put_line('mas '||nama||' inget mati');
elsif (jenis_kelamin ='l') and (umur >= 25) and (umur <= 60) then
dbms_output.put_line('mas '||nama||' Buruan nikah bisi expired!');
end if;
end;
/
dbms_output.put_line('mas '||nama||' inget mati');
elsif (jenis_kelamin ='l') and (umur >= 25) and (umur <= 60) then
dbms_output.put_line('mas '||nama||' Buruan nikah bisi expired!');
end if;
end;
/
Script Input Output
Blok PL/SQL secara umum terdiri atas tiga bagian :
DECLARE
-- berisi deklarasi variable, konstanta,
-- prosedur, ataupun fungsi
BEGIN
-- berisi statemen-statemen yang akan dieksekusi
EXCEPTION
-- berisi perintah untuk mengatasi kesalahan
-- yang mungkin muncul
END;
Blok DECLARE dan EXCEPTION bersifat opsional, hanya dituliskan saat dibutuhkan. Bagian yang wajib adalah BEGIN dan END.
1. Script menghitung keliling & luas lingkaran
declare
jari2 number(5,2);
keliling number(7,2);
luas number(7,2);
begin
jari2 := &jari2;
keliling := 2*3.14*jari2;
luas := 3.14*power(jari2,2);
dbms_output.put_line('Jari-jari lingkaran = '||jari2);
dbms_output.put_line('keliling lingkaran = '||keliling);
dbms_output.put_line('luas lingkaran = '||luas);
end;
/
Hasil output:
2. Script untuk mengubah format tanggal sysdate(tanggal yang di set di komputer)
declare
begin
dbms_output.put_line('Sekarang tanggal: '||sysdate);
dbms_output.put_line('Sekarang hari '||to_char(sysdate,'DAY')||' tanggal '||to_char(sysdate,'DD')||' bulan '||to_char(sysdate,'MM')||' tahun'||to_char(sysdate,'YY'));
end;
/
3. Script untuk menghitung umur seseorang 5 tahun yang akan datang
declare
a varchar(20);
b number(2);
c number(2);
begin
a:='&nama';
b:=&umur;
c:=b+5;
dbms_output.put_line('Hai, nama saya '||a);
dbms_output.put_line('5 tahun lagi umur saya:' ||c||'tahun');
end;
/