- Basic Loop
- For Loop
- While Loop
- Nested Loop (Perulangan bersarang)
Label Pada Looping
Anda dapat memberikan label pada Looping dengan memberikan tanda "<<" pada awal label dan tanda ">>" pada akhir label.Untuk lebih jelasnya, Anda dapat langsung mencoba program PL/SQL seperti di bawah ini:
DECLARE x number(1); y number(1); BEGIN << loop_luar >> FOR x IN 1..5 LOOP << loop_dalam >> FOR y IN 1..5 LOOP DBMS_OUTPUT.PUT_LINE('x adalah: '|| x || ' dan y adalah: ' || y); END LOOP loop_dalam; END loop loop_luar; END; /
Output
x adalah: 1 dan y adalah: 1 x adalah: 1 dan y adalah: 2 x adalah: 1 dan y adalah: 3 x adalah: 1 dan y adalah: 4 x adalah: 1 dan y adalah: 5 x adalah: 2 dan y adalah: 1 x adalah: 2 dan y adalah: 2 x adalah: 2 dan y adalah: 3 x adalah: 2 dan y adalah: 4 x adalah: 2 dan y adalah: 5 x adalah: 3 dan y adalah: 1 x adalah: 3 dan y adalah: 2 x adalah: 3 dan y adalah: 3 x adalah: 3 dan y adalah: 4 x adalah: 3 dan y adalah: 5 x adalah: 4 dan y adalah: 1 x adalah: 4 dan y adalah: 2 x adalah: 4 dan y adalah: 3 x adalah: 4 dan y adalah: 4 x adalah: 4 dan y adalah: 5 x adalah: 5 dan y adalah: 1 x adalah: 5 dan y adalah: 2 x adalah: 5 dan y adalah: 3 x adalah: 5 dan y adalah: 4 x adalah: 5 dan y adalah: 5 PL/SQL procedure successfully completed.
Basic Loop
Sintak DasarLOOP statement yang akan dijalankan; END LOOP;
Contoh Program #1
DECLARE x number := 10; BEGIN LOOP DBMS_OUTPUT.PUT_LINE(x); x := x + 5; IF x > 50 THEN exit; END IF; END LOOP; DBMS_OUTPUT.PUT_LINE('Hasil akhir x adalah : ' || x); END; /
Output #1:
10 15 20 25 30 35 40 45 50 Hasil akhir x adalah : 55 PL/SQL procedure successfully completed.
Selain menggunakan keyword "exit" untuk keluar dari looping, Anda juga bisa menggunakan statement EXIT WHEN, seperti contoh di bawah ini:
Contoh Program#2
DECLARE x number := 10; BEGIN LOOP DBMS_OUTPUT.PUT_LINE(x); x := x + 5; EXIT WHEN x > 50; END LOOP; DBMS_OUTPUT.PUT_LINE('Hasil akhir x adalah : ' || x); END; /
Output #2
10 15 20 25 30 35 40 45 50 Hasil akhir x adalah : 55 PL/SQL procedure successfully completed.
For Loop
Sintak dasarFOR counter IN initial_value .. final_value LOOP sequence_of_statements; END LOOP;
Contoh Program
DECLARE a number(2); BEGIN FOR a in 5 .. 20 LOOP dbms_output.put_line('Nilai bilangan a adalah : ' || a); END LOOP; END; /
Output:
Nilai bilangan a adalah : 5 Nilai bilangan a adalah : 6 Nilai bilangan a adalah : 7 Nilai bilangan a adalah : 8 Nilai bilangan a adalah : 9 Nilai bilangan a adalah : 10 Nilai bilangan a adalah : 11 Nilai bilangan a adalah : 12 Nilai bilangan a adalah : 13 Nilai bilangan a adalah : 14 Nilai bilangan a adalah : 15 Nilai bilangan a adalah : 16 Nilai bilangan a adalah : 17 Nilai bilangan a adalah : 18 Nilai bilangan a adalah : 19 Nilai bilangan a adalah : 20 PL/SQL procedure successfully completed.
Reverse For Loop
Reverse For Loop adalah kebalikan dari For Loop. Dia akan melakukan perulangan secara decrement (dari yang terakhir sampai dengan yang pertama).Contoh Program
DECLARE a number(2); BEGIN FOR a IN REVERSE 5 .. 20 LOOP DBMS_OUTPUT.PUT_LINE('Nilai bilangan a adalah : ' || a); END LOOP; END; /
Output
Nilai bilangan a adalah : 20 Nilai bilangan a adalah : 19 Nilai bilangan a adalah : 18 Nilai bilangan a adalah : 17 Nilai bilangan a adalah : 16 Nilai bilangan a adalah : 15 Nilai bilangan a adalah : 14 Nilai bilangan a adalah : 13 Nilai bilangan a adalah : 12 Nilai bilangan a adalah : 11 Nilai bilangan a adalah : 10 Nilai bilangan a adalah : 9 Nilai bilangan a adalah : 8 Nilai bilangan a adalah : 7 Nilai bilangan a adalah : 6 Nilai bilangan a adalah : 5 PL/SQL procedure successfully completed.
While Loop
Sintak DasarWHILE condition LOOP statement; END LOOP;
Contoh Program
DECLARE a number(2) := 5; BEGIN WHILE a <= 15 LOOP DBMS_OUTPUT.PUT_LINE('Nilai dari a adalah : ' || a); a := a + 1; END LOOP; END; /
Output
Nilai dari a adalah : 5 Nilai dari a adalah : 6 Nilai dari a adalah : 7 Nilai dari a adalah : 8 Nilai dari a adalah : 9 Nilai dari a adalah : 10 Nilai dari a adalah : 11 Nilai dari a adalah : 12 Nilai dari a adalah : 13 Nilai dari a adalah : 14 Nilai dari a adalah : 15 PL/SQL procedure successfully completed.
Nested Loop
Nested Loop atau perulangan bersarang adalah perulangan di dalam perulangan.Sintak Dasar Nested Loop
LOOP statement1; LOOP statement2; END LOOP; END LOOP;
Sintak Dasar Nested For Loop
FOR counter1 IN initial_value1 .. final_value1 LOOP statement1; FOR counter2 IN initial_value2 .. final_value2 LOOP statements2; END LOOP; END LOOP;
Sintak Dasar Nested While Loop
WHILE condition1 LOOP statements1; WHILE condition2 LOOP statements2; END LOOP; END LOOP;
Contoh Program
DECLARE i number(3); j number(3); BEGIN i := 2; LOOP j:= 2; LOOP EXIT WHEN ((mod(i, j) = 0) or (j = i)); j := j +1; END LOOP; IF (j = i ) THEN DBMS_OUTPUT.PUT_LINE(i || ' adalah bilangan prima'); END IF; i := i + 1; EXIT WHEN i = 50; END LOOP; END; /
Output:
2 adalah bilangan prima 3 adalah bilangan prima 5 adalah bilangan prima 7 adalah bilangan prima 11 adalah bilangan prima 13 adalah bilangan prima 17 adalah bilangan prima 19 adalah bilangan prima 23 adalah bilangan prima 29 adalah bilangan prima 31 adalah bilangan prima 37 adalah bilangan prima 41 adalah bilangan prima 43 adalah bilangan prima 47 adalah bilangan prima PL/SQL procedure successfully completed.
Continue Statement
Continue statement digunakan untuk men-skip (meloncat) dari proses perulangan.Sintak Dasar
CONTINUE;
Contoh Program
Program di bawah ini akan mencetak angka 1 sampai dengan 10, kecuali angka 5.
DECLARE a number(2) := 1; BEGIN WHILE a <= 10 LOOP DBMS_OUTPUT.PUT_LINE ('Nilai dari a adalah : ' || a); a := a + 1; IF a = 5 THEN -- skip perulangan dengan menggunakan CONTINUE a := a + 1; CONTINUE; END IF; END LOOP; END; /
Output:
Nilai dari a adalah : 1 Nilai dari a adalah : 2 Nilai dari a adalah : 3 Nilai dari a adalah : 4 Nilai dari a adalah : 6 Nilai dari a adalah : 7 Nilai dari a adalah : 8 Nilai dari a adalah : 9 Nilai dari a adalah : 10 PL/SQL procedure successfully completed.
GO TO Statement
Sintak DasarGOTO label; .. .. << label >> statement;
Contoh Program
DECLARE a number(2) := 10; BEGIN <<label_loop>> WHILE a < 20 LOOP DBMS_OUTPUT.PUT_LINE ('Nilai dari a adalah ' || a); a := a + 1; IF a = 15 THEN a := a + 1; GOTO label_loop; END IF; END LOOP; END; /
Output
Nilai dari a adalah 10 Nilai dari a adalah 11 Nilai dari a adalah 12 Nilai dari a adalah 13 Nilai dari a adalah 14 Nilai dari a adalah 16 Nilai dari a adalah 17 Nilai dari a adalah 18 Nilai dari a adalah 19 PL/SQL procedure successfully completed.
0 comments:
Post a Comment