Situs informasi aplokasi, Tips dan trik, Berita, informasi Teknologi, perkembangan Gadget dan internet.

Thursday, November 14, 2019

Tips Dan Trik Kontrol Perulangan Pada Pl/Sql

PL/SQL Mempunyai beberapa tipe Looping (perulangan), yaitu:

  • Basic Loop
  • For Loop
  • While Loop
  • Nested Loop (Perulangan bersarang)

Label Pada Looping

Anda sanggup menunjukkan label pada Looping dengan menunjukkan tanda "<<" pada awal label dan tanda ">>" pada selesai label.

Untuk lebih jelasnya, Anda sanggup pribadi mencoba kegiatan PL/SQL menyerupai 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 Dasar

LOOP   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 selesai x ialah : ' || x); END; / 

Output #1:

10 15 20 25 30 35 40 45 50 Hasil selesai x ialah : 55  PL/SQL procedure successfully completed. 

Selain memakai keyword "exit" untuk keluar dari looping, Anda juga sanggup memakai statement EXIT WHEN, menyerupai pola 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 selesai x ialah : ' || x); END; / 

Output #2

10 15 20 25 30 35 40 45 50 Hasil selesai x ialah : 55  PL/SQL procedure successfully completed. 

For Loop

Sintak dasar

FOR 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 ialah : ' || a);    END LOOP; END; / 

Output:

Nilai bilangan a ialah : 5 Nilai bilangan a ialah : 6 Nilai bilangan a ialah : 7 Nilai bilangan a ialah : 8 Nilai bilangan a ialah : 9 Nilai bilangan a ialah : 10 Nilai bilangan a ialah : 11 Nilai bilangan a ialah : 12 Nilai bilangan a ialah : 13 Nilai bilangan a ialah : 14 Nilai bilangan a ialah : 15 Nilai bilangan a ialah : 16 Nilai bilangan a ialah : 17 Nilai bilangan a ialah : 18 Nilai bilangan a ialah : 19 Nilai bilangan a ialah : 20  PL/SQL procedure successfully completed. 

Reverse For Loop

Reverse For Loop ialah kebalikan dari For Loop. Dia akan melaksanakan perulangan secara decrement (dari yang terakhir hingga dengan yang pertama).

Contoh Program

DECLARE    a number(2); BEGIN    FOR a IN REVERSE 5 .. 20 LOOP       DBMS_OUTPUT.PUT_LINE('Nilai bilangan a ialah : ' || a);    END LOOP; END; / 

Output

Nilai bilangan a ialah : 20 Nilai bilangan a ialah : 19 Nilai bilangan a ialah : 18 Nilai bilangan a ialah : 17 Nilai bilangan a ialah : 16 Nilai bilangan a ialah : 15 Nilai bilangan a ialah : 14 Nilai bilangan a ialah : 13 Nilai bilangan a ialah : 12 Nilai bilangan a ialah : 11 Nilai bilangan a ialah : 10 Nilai bilangan a ialah : 9 Nilai bilangan a ialah : 8 Nilai bilangan a ialah : 7 Nilai bilangan a ialah : 6 Nilai bilangan a ialah : 5  PL/SQL procedure successfully completed. 

While Loop

Sintak Dasar

WHILE condition LOOP  statement; END LOOP; 

Contoh Program

DECLARE  a number(2) := 5; BEGIN  WHILE a <= 15 LOOP   DBMS_OUTPUT.PUT_LINE('Nilai dari a ialah : ' || a);   a := a + 1;  END LOOP; END; / 

Output

Nilai dari a ialah : 5 Nilai dari a ialah : 6 Nilai dari a ialah : 7 Nilai dari a ialah : 8 Nilai dari a ialah : 9 Nilai dari a ialah : 10 Nilai dari a ialah : 11 Nilai dari a ialah : 12 Nilai dari a ialah : 13 Nilai dari a ialah : 14 Nilai dari a ialah : 15  PL/SQL procedure successfully completed. 

Nested Loop

Nested Loop atau perulangan bersarang ialah 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 || ' ialah bilangan prima');      END IF;      i := i + 1;      EXIT WHEN i = 50;   END LOOP; END; / 

Output:

2 ialah bilangan prima 3 ialah bilangan prima 5 ialah bilangan prima 7 ialah bilangan prima 11 ialah bilangan prima 13 ialah bilangan prima 17 ialah bilangan prima 19 ialah bilangan prima 23 ialah bilangan prima 29 ialah bilangan prima 31 ialah bilangan prima 37 ialah bilangan prima 41 ialah bilangan prima 43 ialah bilangan prima 47 ialah bilangan prima  PL/SQL procedure successfully completed. 

Continue Statement

Continue statement dipakai untuk men-skip (meloncat) dari proses perulangan.

Sintak Dasar

CONTINUE; 

Contoh Program

Program di bawah ini akan mencetak angka 1 hingga dengan 10, kecuali angka 5.

DECLARE    a number(2) := 1; BEGIN    WHILE a <= 10 LOOP       DBMS_OUTPUT.PUT_LINE ('Nilai dari a ialah : ' || a);        a := a + 1;        IF a = 5 THEN          -- skip perulangan dengan memakai CONTINUE          a := a + 1;          CONTINUE;        END IF;    END LOOP; END; / 

Output:

Nilai dari a ialah : 1 Nilai dari a ialah : 2 Nilai dari a ialah : 3 Nilai dari a ialah : 4 Nilai dari a ialah : 6 Nilai dari a ialah : 7 Nilai dari a ialah : 8 Nilai dari a ialah : 9 Nilai dari a ialah : 10  PL/SQL procedure successfully completed. 

GO TO Statement

Sintak Dasar

GOTO label; .. .. << label >> statement; 

Contoh Program

DECLARE    a number(2) := 10; BEGIN    <<label_loop>>     WHILE a < 20 LOOP       DBMS_OUTPUT.PUT_LINE ('Nilai dari a ialah ' || a);       a := a + 1;       IF a = 15 THEN          a := a + 1;          GOTO label_loop;       END IF;    END LOOP; END; / 

Output

Nilai dari a ialah 10 Nilai dari a ialah 11 Nilai dari a ialah 12 Nilai dari a ialah 13 Nilai dari a ialah 14 Nilai dari a ialah 16 Nilai dari a ialah 17 Nilai dari a ialah 18 Nilai dari a ialah 19  PL/SQL procedure successfully completed.