MODUL PERKULIAHAN
Pemrograman
PL/SQL
Percabangan
Fakultas Ilmu Program Studi
Tatap Muka Kode MK Disusun Oleh
Komputer Teknik
Informatika
Sabar Rudiarto, [Link].
04
Abstract Kompetensi
Memahami dan mengerti Mahasiswa mampu memahami
mengenai Percabangan yang tidak dan mengerti mengenai
lain adalah sebuah pemilihan. Percabangan.
PENDAHULUAN
Percabangan adalah sebuah pemilihan yang didasarkan atas kondisi tertentu. Sebuah atau
beberapa statemen yang terdapat pada badan percabangan hanya akan dieksekusi jika kondisi
yang didefinisikan bernilai TRUE. Sebaliknya jika kondisi tersebut bernilai FALSE, badan
percabangan tidak akan pernah dieksekusi karena semua kondisi yang terdapat pada badan
percabangan selalu diperiksa pada saat awal. Oracle sebuah badan percabangan secara umum
dibedakan menjadi 3 struktur, yaitu :
1. Struktur Satu Kondisi
Dalam struktur percabangan yang hanya mempunyai satu kondisi ini jika kondisi tidak terpenuhi
atau bernilai FALSE, badan percabangan tidak akan pernah dimasuki. Sintak umum untuk
pembuatan sebuah struktur percabangan dengan satu kondisi adalah :
IF kondisi THEN
Statemen_1;
END IF;
Contoh 1 :
Buatlah sebuah blok PL/SQL yang dapat menentukan sebuah bilangan bulat apakah termasuk ke
dalam bilangan genap atau tidak. Jika ya, tampilkanlah bilangan tersebut dan diikuti dengan teks
ADALAH BILANGAN GENAP.
Jawaban :
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 BIL INTEGER := 80; -- 80 adalah contoh bilangan yang dicek
3 BEGIN
2018 Pemrograman Basis Data & SQL Pusat Bahan Ajar dan eLearning
2 Sabar Rudiarto, [Link] [Link]
4 IF MOD(BIL, 2) = 0 THEN
5 DBMS_OUTPUT.PUT_LINE (TO_CHAR(BIL) ||
6 'ADALAH BILANGAN GENAP');
7 END IF;
8 END;
9 /
80 ADALAH BILANGAN GENAP
PL/SQL procedure successfully completed.
Pada sintak diatas terdapat adanya function MOD yang mengembalikan nilai sisa bagi dari proses
pembagian bilangan BIL bagi 2. Jika sisa baginya sama dengan 0, artinya BIL habis dibagi 2 yang
berarti pula bahwa bilangan tersebut merupakan bilangan genap. Karena 80 habis dibagi 2,
statemen-statemen yang terdapat pada badan percabangan akan dieksekusi.
Sebaliknya jika bilangan 80 diganti dengan 39 yang mempunyai sisa 1 jika dibagi 2, maka
program tidak dapat memasuki badan percabangan dan statemen-statemen yang ada sudah
tentu tidak akan dieksekusi.
Contoh 2 :
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 BIL INTEGER := 39;
3 BEGIN
4 IF MOD (BIL,2) = 0 THEN
5 DBMS_OUTPUT.PUT_LINE (TO_CHAR(BIL) ||
6 'ADALAH BILANGAN GENAP');
2018 Pemrograman Basis Data & SQL Pusat Bahan Ajar dan eLearning
3 Sabar Rudiarto, [Link] [Link]
7 END IF;
8 END;
9 /
PL/SQL procedure successfully completed.
Contoh 3 :
Buatlah sebuah blok PL/SQL yang dapat menentukan suatu bilangan bulat apakah termasuk ke
dalam bilangan positip atau bukan.
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 BIL INTEGER := 12;
3 BEGIN
4 IF BIL > 0 THEN
5 DBMS_OUTPUT.PUT_LINE (TO_CHAR(BIL) ||
6 'ADALAH BILANGAN POSITIP’);
7 END IF;
8 END;
9 /
2. Struktur Dua Kondisi
Pada struktur dua kondisi ini, statemen-statemen yang akan dieksekusi adalah statemen yang
didasarkan pada kondisi yang nilainya TRUE. Artinya, tidak mungkin terdapat dua kondisi yang
keduanya bernilai TRUE. Sintak umum badan percabangan yang mempunyai dua kondisi adalah
sebagai berikut :
2018 Pemrograman Basis Data & SQL Pusat Bahan Ajar dan eLearning
4 Sabar Rudiarto, [Link] [Link]
IF kondisi THEN
Statemen_1;
ELSE
Statemen_2;
…
Sintak diatas berarti bahwa program akan mengeksekusi Statemen_1 jika kondisi terpenuhi,
END
tetapi jika tidak IF;
terpenuhi maka yang akan dieksekusi adalah statemen_2.
Contoh 1 :
Buatlah sebuah blok PL/SQL yang dapat menentukan bilangan bulat apakah termasuk bilangan
genap atau bilangan ganjil. Kemudian tampilkan bilangan tersebut dengan diikuti teks ADALAH
BILANGAN GENAP (jika bilangan tersebut habis dibagi 2) dan jika (tidak habis dibagi 2 ) maka teks
yang ditampilkan ADALAH BILANGAN GANJIL.
Jawab :
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 BIL INTEGER := 3;
3 BEGIN
4 IF MOD (BIL,2) = 0 THEN
5 DBMS_OUTPUT.PUT_LINE (TO_CHAR(BIL)||
6 'ADALAH BULANGAN GENAP');
7 ELSE
8 DBMS_OUTPUT.PUT_LINE (TO_CHAR(BIL)||
2018 Pemrograman Basis Data & SQL Pusat Bahan Ajar dan eLearning
5 Sabar Rudiarto, [Link] [Link]
9 'ADALAH BILANGAN GANJIL');
10 END IF;
11 END;
12 /
3ADALAH BILANGAN GANJIL
PL/SQL procedure successfully completed.
Contoh 2 :
Buatlah sebuah blok PL/SQL yang dapat menentukan bilangan terbesar dari dua buah bilangan
bulat.
Jawab :
DECLARE
BIL1 INTEGER;
BIL2 INTEGER;
BEGIN
BIL1 := 24;
BIL2:= 100;
IF BIL1 > BIL2 THEN
DBMS_OUTPUT.PUT_LINE (‘Bilangan terbesar dari ‘ ||
TO_CHAR(BIL1) || ‘ dan ‘ || TO_CHAR(BIL2) ||
‘ adalah ‘ || TO_CHAR(BIL1));
ELSE
DBMS_OUTPUT.PUT_LINE (‘Bilangan terbesar dari ‘ ||
2018 Pemrograman Basis Data & SQL Pusat Bahan Ajar dan eLearning
6 Sabar Rudiarto, [Link] [Link]
TO_CHAR(BIL1) || ‘ dan ‘ || TO_CHAR(BIL2) ||
‘ adalah ‘ || TO_CHAR(BIL2));
END IF;
END;
Meskipun memberikan hasil yang benar, namun jika dilihat dari segi algoritmik, sintak di atas
masih belum efisien karena masih terdapat adanya pengulangan penulisan pada setiap kondisi
yang didefinisikan. Coba disederhanakan....
DECLARE
BIL1 INTEGER := 24;
BIL2 INTEGER := 100;
STR VARCHAR(50);
BEGIN
STR := ‘Bilangan terbesar dari ‘ || TO_CHAR(BIL1) || ‘ dan ‘ || TO_CHAR(BIL2) || ‘ adalah ‘;
IF BIL1 > BIL2 THEN
DBMS_OUTPUT.PUT_LINE (STR || TO_CHAR(BIL1));
ELSE
DBMS_OUTPUT.PUT_LINE (STR || TO_CHAR(BIL2));
END IF;
END;
2018 Pemrograman Basis Data & SQL Pusat Bahan Ajar dan eLearning
7 Sabar Rudiarto, [Link] [Link]
3. Struktur Tiga Kondisi atau Lebih
Sintak umum untuk pembuatan badan percabangan yang mempunyai tiga kondisi atau lebih
dapat anda lihat seperti berikut :
IF kondisi_1 THEN
Statemen_1;
ELSIF kondisi_2 THEN
Statemen_2;
ELSE
Statemen_3;
Sintak diatas menunjukkan
… bahwa mula-mula dilakukan pengecekan nilai terhadap kondisi_1.
Jika kondisi_1 bernilai TRUE, statemen_1 yang akan dieksekusi. Tetapi jika tidak, akan dilakukan
END IF;
pengecekan terhadap kondisi_2. Jika kondisi_2 bernilai TRUE, statemen_2 yang akan dieksekusi,
tetapi jika kondisi_2 juga masih bernilai FALSE, berarti yang akan dieksekusi adalah statemen_3.
Contoh 1 :
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 X INTEGER;
3 BEGIN
4 X := -25;
5 IF X >0 THEN
6 DBMS_OUTPUT.PUT_LINE (TO_CHAR(X) || 'ADALAH BILANGAN POSITIF');
2018 Pemrograman Basis Data & SQL Pusat Bahan Ajar dan eLearning
8 Sabar Rudiarto, [Link] [Link]
7 ELSIF X = 0 THEN
8 DBMS_OUTPUT.PUT_LINE ('BILANGAN NOL');
9 ELSE
10 DBMS_OUTPUT.PUT_LINE (TO_CHAR(X) || 'ADALAH BILANGAN NEGATIF');
11 END IF;
12 END;
13 /
-25 ADALAH BILANGAN NEGATIF
PL/SQL procedure successfully completed.
Pada sintak diatas, nilai X yang didefinisikan adalah -25. Mula-mula akan diperiksa kondisi X > 0.
Karena -25 tidak lebih besar dari 0, maka dilakukan pengecekan terhadap kondisi berikutnya
yaitu X = o. Oleh karena -25 juga tidak sama dengan 0, statemen yang dieksekusi adalah
statemen yang ‘tidak’ didasarkan atas dua kondisi tersebut.
Contoh 2 :
Buatlah sebuah blok PL/SQL untuk menentukan nama hari dari nomor/indeks hari yang
diberikan.
Jawab :
SQL> SET SERVEROUTPUT ON
SQL> DECLARE
2 K INTEGER := 2;
3 HARI VARCHAR2 (6);
4 BEGIN
2018 Pemrograman Basis Data & SQL Pusat Bahan Ajar dan eLearning
9 Sabar Rudiarto, [Link] [Link]
5 IF K = 1 THEN
6 HARI := 'MINGGU';
7 ELSIF K = 2 THEN
8 HARI := 'SENIN';
9 ELSIF K = 3 THEN
10 HARI := 'SELASA';
11 ELSIF K = 4 THEN
12 HARI := 'RABU';
13 ELSIF K = 5 THEN
14 HARI := 'KAMIS';
15 ELSIF K = 6 THEN
16 HARI := 'JUMAT';
17 ELSE
18 HARI := 'SABTU';
19 END IF;
20 DBMS_OUTPUT.PUT_LINE ('Hari ke-' || TO_CHAR (K) ||
21 ' Adalah ' || INITCAP (HARI));
22 END;
23 /
Hari ke-2 Adalah Senin
2018 Pemrograman Basis Data & SQL Pusat Bahan Ajar dan eLearning
10 Sabar Rudiarto, [Link] [Link]
LATIHAN :
1. Buatlah sebuah blok PL/SQL yang dapat memberikan indeks/nomor urut bulan jika yang
dimasukkan adalah nama bulannya. Misalnya, kita masukkan nama bulan MARET, yang akan
dihasilkan dari blok PL/SQL tersebut adalah teks ‘Bulan Maret adalah bulan ke-3’.
2. Buatlah sebuah blok PL/SQL yang dapat menentukan nilai indeks (A, B, C, D atau E) dari nilai
ujian (masih berbentuk angka) yang dilakukan oleh mahasiswa di sebuah PTN. Ketentuan
adalah sebagai berikut:
Nilai Indeks Nilai Angka
A Nilai >= 80
B 70 <= nilai < 60
C 55 <= nilai < 70
D 40 <= nilai < 55
E Nilai < 40
Daftar Pustaka
- Oracle. 2006. Oracle 10 g Express Edition Help System.
- Oracle Database 11G. Sept-2009 PL/SQL FUNDAMENTAL
- Heryanto, Imam; Raharjo, Budi. April-2003. Pemrograman PL/SQL ORACLE.
Penerbit: Informatika.
2018 Pemrograman Basis Data & SQL Pusat Bahan Ajar dan eLearning
11 Sabar Rudiarto, [Link] [Link]