Senin, 16 April 2012

Pengulangan dalam PL/SQL


Didalam Oracle ada 3 struktur pengulangan, yaitu :
1. Simple Loop
2. While-Loop
3. For-Loop.

Struktur Pengulangan

1. Simple Loop
    Sintaks umum penulisan simple Loop adalah:
       
    LOOP
            statemen_1,
        …
            EXIT WHEN kondisi_1;
     END LOOP;

2.  While Loop
     Sintaks umum penulisan While Loop adalah:

      WHILE kodisi_1 LOOP
    statemen_1,
    ...
      END LOOP

3.  For Loop
     Sintaks umum penulisan For Loop adalah:

     FOR kodisi_1 LOOP
      statemen_1,
      ...
     END LOOP
       
Contoh Pengulangan
Contoh 1:
Mencetak kalimat 'Sukses dgn Oracle' Sebanyak 10 kali.

= Struktur Simple LOOP =
SET SERVEROUTPUT ON
DECLARE
    i integer;
BEGIN   
    i:=0;
    LOOP
        i:=i+1;
        DBMS_OUTPUT.PUT_LINE('Sukses dgn Oracle');
        EXIT WHEN i=10;
    END LOOP;
END;
/

= Struktur While LOOP =
SET SERVEROUTPUT ON
DECLARE
      i integer;
BEGIN
      i:=0;
      WHILE (i<=10) LOOP
           DBMS_OUTPUT.PUT_LINE('Sukses dgn Oracle');
           i:=i+1;
      END LOOP;
END;


= Struktur FOR LOOP =
SET SERVEROUTPUT ON
DECLARE
      i integer;
BEGIN
      FOR i IN 1..10 LOOP
    DBMS_OUTPUT.PUT_LINE('Sukses dgn Oracle');
      END LOOP;
END;
/

Perhatikan script-script diatas,
●    SERVEROUTPUT    :  variable system
●    DBMS_OUTPUT     :  package
●    PUT_LINE    :    :  procedure

Contoh 2:
Melakukan penjumlahan deret angka (2+4+… +(n+2))

= Struktur Simple LOOP =
SET SERVEROUTPUT ON
DECLARE
    jumlah    integer;
    K         integer;
BEGIN
    jumlah:=0;
    K:=2;
    LOOP
        JUMLAH:=jumlah+K;
        K:=K+2;
        EXIT WHEN K>18;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+6..18 adalah :'||JUMLAH);
END;
/

= Struktur While LOOP =
SET SERVEROUTPUT ON
DECLARE
    jumlah   integer;
    K        integer;
BEGIN
    jumlah:=0;
    K:=2;
    WHILE (K<=18) LOOP
           jumlah:=jumlah+K;
           k:=k+2;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+6..18 adalah :'||JUMLAH);
END;
/

= Struktur FOR LOOP =
SET SERVEROUTPUT ON
DECLARE
     i          integer;
     jumlah    integer;
     K              integer;
BEGIN
     jumlah:=0;
     K:=2;
     FOR i IN 1..(18/2) LOOP
         jumlah:=jumlah+K;
         k:=k+2;  
     END LOOP;
     DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+6..18 adalah :' ||JUMLAH);
END;
/  

Contoh 3:
Melakukan penjumlahan deret bilangan ganjil 1+3+5..+11

= Struktur Simple LOOP =
SET SERVEROUTPUT ON
DECLARE
      Jumlah   integer;
     K        integer;
BEGIN
     jumlah:=0;
     K:=1;
     LOOP
        JUMLAH:=jumlah+K;
        K:=K+2;
        EXIT WHEN K>11;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('Jumlah 1+3+5+7+9+..25 adalah :'||JUMLAH);
END;
/

= Struktur While LOOP =
SET SERVEROUTPUT ON
DECLARE
    Jumlah  integer;
    K       integer;
BEGIN
    jumlah:=0;
    K:=1;
    WHILE (K<=11) LOOP
          jumlah:=jumlah+K;
          k:=k+2;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('Jumlah 1+3+5+7+9+..25 adalah :'||JUMLAH);
END;


= Struktur For LOOP =  
SET SERVEROUTPUT ON
DECLARE
     I       integer;
     jumlah  integer;
     K       integer;
BEGIN
     jumlah:=0;
     K:=1;
     FOR i IN 1..6 LOOP
         jumlah:=jumlah+K;
        k:=k+2;  
     END LOOP;
     DBMS_OUTPUT.PUT_LINE('Jumlah 1+3+5+7+9+..25 adalah:'||JUMLAH);
END;
/
   
Contoh 4:
Menjumlahkan sejumlah deret ukur 2+4+16+256

= Struktur Simple LOOP =
SET SERVEROUTPUT ON
DECLARE
      jumlah   integer;
      K        integer;
BEGIN
      jumlah:=0;
      K:=2;
      LOOP
          JUMLAH:=jumlah+K;
          K:=K*k;
          EXIT WHEN K>256;
      END LOOP;
      DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+16+256 adalah :' ||JUMLAH);
END;
/

= Struktur While LOOP =
SET SERVEROUTPUT ON 
DECLARE
       jumlah     integer;
       K            integer;
BEGIN
      jumlah:=0;
       K:=2;
       WHILE (K<=256) LOOP
            JUMLAH:=jumlah+K;
            K:=K*k;
       END LOOP;
       DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+16+256 adalah :' ||JUMLAH);
END;


= Struktur FOR LOOP =
SET SERVEROUTPUT ON 
DECLARE
     I       integer;
     Jumlah  integer;
     K       integer;
BEGIN
     jumlah:=0;
     K:=2;
     FOR i IN 1..4 LOOP
     JUMLAH:=jumlah+K;
     K:=K*k;
     END LOOP;
   DBMS_OUTPUT.PUT_LINE('Jumlah 2+4+16+256 adalah :'||JUMLAH);
END;
/

     

     i:=10;
     FOR i IN REVERSE 1..10 LOOP
         DBMS_OUTPUT.PUT_LINE(TO_CHAR(i));
     End loop;
END;
/

2 komentar: