Anda di halaman 1dari 11

MODUL PERKULIAHAN

Pemrograman
PL/SQL

Percabangan

Fakultas Ilmu Program Studi


Tatap Muka Kode MK Disusun Oleh
Komputer Teknik
Informatika
Sabar Rudiarto, M.Kom.

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, M.Kom http://www.mercubuana.ac.id
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, M.Kom http://www.mercubuana.ac.id
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, M.Kom http://www.mercubuana.ac.id
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, M.Kom http://www.mercubuana.ac.id
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, M.Kom http://www.mercubuana.ac.id
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, M.Kom http://www.mercubuana.ac.id
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, M.Kom http://www.mercubuana.ac.id
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, M.Kom http://www.mercubuana.ac.id
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, M.Kom http://www.mercubuana.ac.id
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, M.Kom http://www.mercubuana.ac.id

Anda mungkin juga menyukai