Jumat, 05 November 2010

LOOPING PADA SQL

Struktur iterasi (looping) memungkinkan eksekusi blok statemen secara berulang selama kondisi yang didefinisikan bernilai TRUE. Iterasi ini sendiri terbagi menjadi tiga jenis : simple loop (infinitif), FOR, dan WHILE. Statemen EXIT atau EXIT WHEN dapat digunakan untuk keluar dari kontrol iterasi menuju statemen-statemen di bawah blok iterasi (setelah posisi END LOOP).

1. Simple LOOP

Struktur simple LOOP ini digunakan bila diinginkan minimal iterasi dijalankan satu kali. Dalam struktur ini harus ditambahkan statemen EXIT WHEN untuk menghindari eksekusi tak terbatas (infinitif).
LOOP
statemen-statemen;
END LOOP;

Contoh:
DECLARE
x number;
BEGIN
x := 0;
LOOP
x := x + 1;
IF x > 5 THEN
EXIT; -- exit loop immediately
END IF;
dbms_output.put_line('Hasil looping ke- '||x);
END LOOP;
END; 

Output:


2. Statemen FOR-LOOP

Struktur pengulangan For digunakan untuk menghasilkan pengulangan sejumlah kali tanpa penggunaan kondisi apapun. Stuktur ini menyebabkan aksi diulangi sejumlah beberapa kali (tertentu). Bentuk umum struktur for ada dua macam yaitu : menaik (ascending) atau menurun (descending). Sintaksnya sebagai berikut :
FOR var IN [REVERSE] indeks_min .. indeks_max LOOP
statemen-statemen;
END LOOP;

Variabel iterasi (var) tidak perlu dideklarasi karena PL/SQL melakukan deklarasi secara implisit dan variabel ini berlaku dalam LOOP itu saja.
  • Kata REVERSE akan membuat iterasi dimulai dari indeks_max dan berkurang satu untuk proses iterasi. Demikian seterusnya hingga var = indeks_min.
  • Bila nilai indeks_max < indeks_min, proses iterasi tidak dilakukan. 
Contoh:

declare
x number(3);

begin
x:=&masukan_angka;

for i in 1..x loop
dbms_output.put_line(i);
end loop;

end;
/

Output:


3. Statemen WHILE

Struktur ini selalu memeriksa kebenaran kondisi di awal blok iterasi. Bila kondisi bernilai FALSE, maka statemen-statemen dalam blok iterasi tidak akan dieksekusi.
WHILE kondisi LOOP
statemen-statemen;
END LOOP;

Contoh:
declare
a number;
b number;
c number;
i number;

begin
a:=&batas_bawah;
b:=&batas_atas;
c:=0;

i:=a;
while i<=b loop

     if mod(i,3)=0 then
     c:=c+1;

end if;   
i:=i+1;

end loop;

dbms_output.put_line('Ada '||c||' angka yang habis dibagi 3 antara '||a||' dan '||b);

end;
/

Output:


4. Statemen EXIT dan EXIT WHEN

Kedua statemen ini – EXIT dan EXIT WHEN – digunakan untuk keluar dari blok iterasi tanpa melanjutkan proses yang sedang dilakukan.
EXIT WHEN kondisi;

Contoh:
declare
x number(2);
i number(2);

begin
x :=&masukan_angka;

i:=1;

loop
     if mod(i,2)=1 then
     dbms_output.put_line('tes'||i);
     end if;
i:=i+1;
EXIT WHEN i>x;
end loop;

end;
/


Perintah EXIT WHEN di atas identik dengan perintah berikut :
IF kondisi THEN
EXIT;
END IF;

Contoh:
declare
x number(2);
i number(2);

begin
x :=&masukan_angka;

i:=1;

loop
     if mod(i,2)=1 then
     dbms_output.put_line('tes'||i);
     end if;
i:=i+1;

if (i>x) then
EXIT;
end if;
end loop;

end;
/


Output:









Tidak ada komentar:

Posting Komentar