Modul Pemrograman PL SQL (TM11) - PLSQL Part 2
Modul Pemrograman PL SQL (TM11) - PLSQL Part 2
Pemrograman
PL/SQL
PL / SQL – Part 2 (Kondisi)
11
Ilmu Komputer Sistem Informasi F061700016 Dian Wirawan, S.Kom, M.Kom
Abstract Kompetensi
Membahas tentang PL/SQL pada Mahasiwa dapat mengetahui dasar dari
OracleExpress Edition. PL/SQL, membantu mahasiswa
memahami proses dari PL/SQL pada
Oracle Express Edition.
Lanjutan Kondisi Pada PL/SQL
Pernyataan While – Loop
Perintah WHILE-LOOP akan terus melakukan iterasi (memproses baris perintah secara
berulang) selama KONDISI bernilai TRUE. Bentuk umum dari pernyataan LOOP
sebagai berikut:
WHILE kondisiLOOP
//Barisperintah
END LOOP;
Contoh:
DECLARE
x number;
BEGIN
x := 0;
WHILE x <= 5 LOOP
x := x + 1;
dbms_output.put_line('Hasil looping ke- '||x);
END LOOP;
END;
Selain dapat digunakan pada perintah LOOP, perintah EXIT ini juga dapat digunakan
pada WHILE-LOOP untuk menambahkan kondisi tertentu. Namun perintah EXIT ini
hanya bias digunakan dalam loop saja.
Contoh:
DECLARE
vno number;
BEGIN
vno:=1;
WHILE vno<= 10 LOOP
insert into coba(no) values vno;
EXIT WHEN vno = 10;
vno:=vno+1;
END LOOP;
END;
Perintah FOR-LOOP melakukan iterasi selama nilai COUNTER berada dalam range
nilaii_terendah dan i_teratas. Pada FOR-LOOP, counter tidak perlu dideklarasikan.
Penggunaan kata kunci RESERVE akan menyebabkan nilai counter dimulai dari
i_teratas ke i_terendah. Dua titik antara i_terendah dan i_teratas merupakan operator
rentang nilai.i_terendah maupun i_terkecil bias berupa nilai integer atau pun variabel
yang bernilai integer yang sudah dideklarasikan sebelumnya. i_upper harus lebih besar
dari i_lower dan jika tidak maka iterasi tidak akan dilakukan.
Contoh:
BEGIN
FOR vno IN 1..10 LOOP
insert into coba(no) values vno;
dbms_output.put_line('Hasil looping ke- '||x);
END LOOP;
END;
BEGIN
FOR vno IN REVERSE 1..10 LOOP
insert into coba(no) values vno;
dbms_output.put_line('Hasil looping ke- '||x);
END LOOP;
END;
Selain dapat digunakan pada perintah LOOP, perintah EXIT ini juga dapat digunakan
pada FOR-LOOP untuk menambahkan kondisi tertentu. Namun perintah EXIT ini hanya
bias digunakan dalam loop saja.
Contoh:
BEGIN
BEGIN
<<outer>>
FOR i IN 1..5 LOOP
...
FOR j IN 1..10 LOOP
FETCH c1 INTO mhs_rec;
EXIT outer WHEN c1%NOTFOUND; -- exit both
FOR loops
...
END LOOP;
END LOOP outer;
-- control passes here
END;
Perintah GOTO
Perintah ini digunakan untuk mengarahkan proses kebaris yang ditandai dengan label
tertentu. Bentuk umum pemakaian perintah ini adalah:
GOTO nama_label;
<<nama_label>>
DECLARE
x number;
BEGIN
x := 0;
LOOP
x := x + 1;
IF x = 5 THEN
GOTO EndOfLoop;
END IF;
END LOOP;
<<EndOfLoop>>dbms_output.put_line('Hasil looping
: '||x);
END;
Contoh:
create or replace procedure coba
(v_nimmahasiswa.nim %type) is
cursor mhs_cur is
select nim, nama, alamat
from mahasiswa
where nim=v_nim;
mhs_recmhs_cur%rowtype;
begin
open mhs_cur;
<<iterasi>>
fetch mhs _cur into mhs _rec;
gotoiterasi;
Perintah goto tidak boleh menuju label yang berada dalam perintah IF, LOOP,
blok lain dan blok yang menjadi sub bloknya.
Sebuah label harus diikuti oleh paling tidak sebuah perintah eksekusi PL/SQL.
Kata atau reserved word seperti END, END IF dan END LOOP tidak termasuk
sebagai perintah eksekusi. Tetapi NULL termasuk perintah eksekusi.
Contoh Praktek.
a) Operator Matematika.
Dibawah ini adalah table operator matematika serta contoh PL/SQL nya.
Sample
BEGIN
dbms_output.put_line(10+5);
dbms_output.put_line(10-5);
dbms_output.put_line(10*5);
dbms_output.put_line(10/5);
dbms_output.put_line(10**5);
END;
/
Result
15
5
50
2
100000
Operasi relational adalah operator yang membandingkan 2 ekspresi atau nilai yang
memiliki hasil benar atau salah atau yang disebut Boolean. Berikut adalah table
operator Relational.
Contoh
DECLARE
a number (2) := 21;
b number (2) := 10;
BEGIN
IF (a = b) then
dbms_output.put_line('Line 1 - a is equal to b');
ELSE
dbms_output.put_line('Line 1 - a is not equal to b');
END IF;
IF (a < b) then
dbms_output.put_line('Line 2 - a is less than b');
ELSE
dbms_output.put_line('Line 2 - a is not less than b');
END IF;
IF ( a> b ) THEN
dbms_output.put_line('Line 3 - a is greater than b');
ELSE
dbms_output.put_line('Line 3 - a is not greater than b');
IF ( b>= a ) THEN
dbms_output.put_line('Line 5 - b is either equal or greater than a');
END IF;
IF ( a<> b ) THEN
dbms_output.put_line('Line 6 - a is not equal to b');
ELSE
dbms_output.put_line('Line 6 - a is equal to b');
END IF;
END;
/
Hasil nya
Operator Description
BEGIN
compare('Zara Ali', 'Z%A_i');
compare('Nuha Ali', 'Z%A_i');
END;
/
Hasil
True
False
BETWEEN Operator:
Contoh
DECLARE
x number(2) := 10;
BEGIN
IF (x between 5 and 20) THEN
dbms_output.put_line('True');
ELSE
dbms_output.put_line('False');
END IF;
Result
True
True
False
DECLARE
letter varchar2(1) := 'm';
BEGIN
IF (letter in ('a', 'b', 'c')) THEN
dbms_output.put_line('True');
ELSE
dbms_output.put_line('False');
END IF;
Hasilnya
False
True
False
PL/SQL – Condition
Result