1. Perintah IF-THEN
Bentuk sederhana dari perintah IF menghubungkan kondisi dengan rangkaian perintah-perintah yang diapit oleh kata-kata kunci THEN dan END IF (bukan ENDIF), seperti berikut:
IF condition THEN
sequence_of_statements
END IF;
Rangkaian perintah-perintah dieksekusi hanya jika kondisi adalah true. Jika kondisi bernilai false atau null, perintah IF tidak melakukan apa-apa. Dalam salah satu kasus, kontrol berlalu kepada perintah selanjutnya. Contohnya:
IF sales > quota THEN
compute_bonus(empid);
UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;
Kita dapat meletakkan perintah-perintah IF yang pendek dalam satu baris tunggal, seperti
IF x > y THEN high := x; END IF;
2. Perintah IF-THEN-ELSE
Bentuk kedua dari perintah IF menambahkan kata kunci ELSE diikuti oleh rangkaian perintah-perintah alternatif, seperti berikut:
IF condition THEN
sequence_of_statements1
ELSE
sequence_of_statements2
END IF;
Rangkaian perintah-perintah dalam klausa ELSE dieksekusi hanya jika kondisi bernilai false atau null. Jadi, klausa ELSE memastikan bahwa rangkaian perintah-perintah tersebut dieksekusi. Dalam contoh berikut ini, perintah UPDATE pertama dieksekusi ketika kondisi bernilai true, namun perintah UPDATE kedua dieksekusi ketika kondisi bernilai false atau null:
IF trans_type = 'CR' THEN
UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
UPDATE accounts SET balance = balance - debit WHERE ...
END IF;
Klausa-klausa THEN dan ELSE dapat mengandung perintah-perintah IF. Sehingga, perintah-perintah IF dapat bersarang, seperti ditunjukkan oleh contoh berikut ini:
IF trans_type = 'CR' THEN
UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
IF new_balance >= minimum_balance THEN
UPDATE accounts SET balance = balance - debit WHERE ...
ELSE
RAISE insufficient_funds;
END IF;
END IF;
contoh:
declare
x varchar(10);
y number(5);
begin
x:= ‘tes';
Y:= 15;
dbms_output.put_line('Selamat Datang '||x);
if y <>
dbms_output.put_line(‘tes lagi ah’);
end if;
end;
/
3. Perintah IF-THEN-ELSIF
Suatu ketika kita ingin memilih suatu tindakan dari beberapa alternatif yang terpisah satu sama lain. Bentuk ketiga dari perintah IF menggunakan kata kunci ELSIF (bukan ELSEIF) untuk memperkenalkan kondisi-kondisi tambahan, sebagai berikut:
IF condition1 THEN
sequence_of_statements1
ELSIF condition2 THEN
sequence_of_statements2
ELSE
sequence_of_statements3
END IF;
Jika kondisi pertama bernilai false atau null, klausa ELSIF akan menguji kondisi lainnya. Perintah IF dapat memiliki sejumlah klausa ELSIF; klausa final ELSE bersifat opsional (bisa digunakan atau tidak). Kondisi-kondisi dievaluasi satu demi satu dari atas ke bawah. Jika suatu kondisi bernilai true, rangkaian perintah-perintah yang ada di dalamnya dieksekusi dan kontrol akan menuju ke perintah selanjutnya. Jika seluruh kondisi bernilai false atau null, maka rangkaian perintah-perintah di dalam klausa ELSE yang akan dieksekusi. Mari kita perhatikan contoh berikut ini:
BEGIN
...
IF sales > 50000 THEN
bonus := 1500;
ELSIF sales > 35000 THEN
bonus := 500;
ELSE
bonus := 100;
END IF;
INSERT INTO payroll VALUES (emp_id, bonus, ...);
END;
Jika nilai sales lebih besar dari 50000, kondisi pertama dan kedua bernilai true. Namun, bonus diberikan kepada nilai yang sesuai dari 1500 karena kondisi kedua tidak pernah diuji. Ketika kondisi pertama bernilai true, perintah-perintah di dalamnya dieksekusi dan kontrol menuju ke perintah INSERT.