Anda di halaman 1dari 4

Pembahasan kali ini menunjukkan kepada kita bagaimana menyusun aliran kontrol melalui

program PL/SQL. Kita akan mempelajari bagaimana perintah-perintah dihubungkan dengan


struktur-struktur kontrol sederhana namun powerful, yang memiliki single entry dan exit point.
Secara bersama-sama, struktur-struktur ini dapat menangani berbagai situasi. Penggunaan
yang tepat akan menghasilkan program terstruktur yang baik.

A. Gambaran Struktur Kontrol PL/SQL


Berdasarkan structure theorem, setiap program komputer dapat ditulis menggunakan struktur
kontrol dasar yang ditunjukkan dalam Gambar 4-1. Mereka dapat dikombinasikan dalam suatu
cara yang diperlukan untuk menjawab permasalahan-permasalahan yang ada.
Gambar 4-1 Struktur-struktur Kontrol
Struktur seleksi menguji kondisi, lalu mengeksekusi satu rangkaian perintah-perintah daripada
lainnya, bergantung kepada kondisi mana yang true atau false. Suatu condition (kondisi)
merupakan suatu variable atau ekpresi yang menghasilkan nilai Boolean (TRUE atau FALSE).
Struktur perulangan mengeksekusi rangkaian perintah-perintah secara berulang-ulang selama
suatu kondisi bernilai true. Struktur sekuensial (berurutan) secara sederhana mengeksekusi
rangkaian perintah-perintah dalam urutan.
B. Struktur Kondisional: Perintah-perintah IF dan CASE
Seringkali, diperlukan untuk mengambil tindakan-tindakan alternatif bergantung kepada
keadaan-keadaan yang ada. Perintah IF mengijinkan kita untuk mengeksekusi rangkaian
perintah-perintah berdasarkan suatu kondisi. Dengan begitu, apakah suatu rangkaian perintahperintah dieksekusi atau tidak, bergantung kepada nilai dari kondisi. Terdapat tiga bentuk
perintah-perintah IF: IF-THEN, IF-THEN-ELSE, dan IF-THEN-ELSIF. Perintah CASE merupakan cara
yang ringkas untuk mengevaluasi kondisi tunggal dan memiliki diantara banyak alternatif
tindakan.
1. Perintah IF-THEN
Bentuk sederhana dari perintah IF menghubungkan kondisi dengan rangkaian perintahperintah 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 perintahperintah 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, perintahperintah 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.
4.2.5. Pedoman untuk Perintah-perintah Kondisional PL/SQL
Hindari perintah-perintah IF yang janggal seperti contoh berikut ini:
IF new_balance < overdrawn =" TRUE">Kode ini mengabaikan fakta-fakta yang berguna.
Pertama, nilai ekspresi Boolean dapat langsung diberikan kepada variable Boolean. Jadi, kita
dapat mengganti perintah IF pertama dengan pemberian nilai sederhana berikut ini:
overdrawn := new_balance <>Kedua, variable Boolean itu sendiri bernilai true atau false. Jadi,
kita dapat menyederhanakan kondisi dalam perintah IF yang kedua menjadi:

IF overdrawn THEN ...


Jika dimungkinkan, gunakan klausa ELSIF daripada perintah-perintah IF bersarang. Dengan
demikian, kode program kit menjadi lebih mudah dibaca dan dimengerti. Bandingkan perintahperintah IF berikut ini:
IF condition1 THEN | IF condition1 THEN statement1; | statement1; ELSE | ELSIF condition2
THEN IF condition2 THEN | statement2; statement2; | ELSIF condition3 THEN ELSE |
statement3; IF condition3 THEN | END IF; statement3; | END IF; | END IF; | END IF; |
Perintah-perintah ini secara logikal sama, namun perintah pertama tidak jelas dalam hal aliran
logikanya, dimana perintah kedua mengungkapnya.
Jika kita membandingkan ekspresi tunggal terhadap banyak nilai, kita dapat menyederhanakan
logika dengan menggunakan perintah CASE tunggal daripada menggunakan IF dengan banyak
klausa ELSIF.

Anda mungkin juga menyukai