Jumat, 06 Juni 2014

ARRAY DALAM PL/SQL.


Array adalah tipe data bentukan yang dapat menyimpan sekumpulan nilai dari tipe data yang sama dan dikemas dalam bentuk larik.  Nilai dari elemen-elemen array dapat diakses melalui indeksnya.

·         Membuat Tipe Array.

TYPE nama_tipe IS
           TABLE OF tipe_data
           INDEX BY BINARY_INTEGER;




Keterangan :
nama_tipe= Nama array yg didefinisikan.
tipe_data= Berfungsi utk mendeklarasikan tipe dari kumpulan data yg akan disimpan didalam array.
INDEX BY BINARY_INTEGER = Berfungsi untuk menunjukkan bahwa array tsb akan di indeks.

·         Mingisi Nilai Pada Elemen Array.

BEGIN
    X(1) := ‘A’;
    X(2) := ‘B’; 
END;
   
Contoh 1 a. :

SET SERVEROUTPUT ON
DECLARE
   TYPE LARIK IS
        TABLE OF NUMBER
   INDEX BY BINARY_INTEGER;
        A LARIK;
BEGIN
-- Melakukan pengisian terhadap elemen-elemen array
        A(1) := 10;      A(2) := 20;
        A(3) := 30;      A(4) := 40;
       -- Menampilkan elemen array ke layar
        DBMS_OUTPUT.PUT_LINE('Nilai elemen larik ke-1' || '='
                           ||TO_CHAR(A(1)));
        DBMS_OUTPUT.PUT_LINE('Nilai elemen larik ke-2' || '='
                           ||TO_CHAR(A(2)));
      DBMS_OUTPUT.PUT_LINE('Nilai elemen larik ke-3' || '=' 
                           ||TO_CHAR(A(3)));
END;
/


·         Mengurutkan Data Pada Elemen Array.
Anda diminta utk mengurutkan data-data yg tersusun secara acak pada sebuah array dgn menggunakan blok PL/SQL. Data yg dimaksud adalah : 544, 78, 565, 23, 4


SET SERVEROUTPUT ON
DECLARE
TYPE LARIK IS
     TABLE OF NUMBER
     INDEX BY BINARY_INTEGER;

     X        LARIK;
     Temp     NUMBER;
     idx_max  NUMBER;
     i      BINARY_INTEGER;
     y        BINARY_INTEGER;
BEGIN  
     X(1) := 544;  X(2) := 78;
     X(3) := 565;  X(4) := 23;   X(5) := 4;
     DBMS_OUTPUT.PUT_LINE('Sebelum di-urutkan : ');
     ----------------------------------------------
     FOR i IN 1..5 LOOP
         DBMS_OUTPUT.PUT_LINE('X('||i||') = '||
                               TO_CHAR(X(i)));
     END LOOP; 
----------------------------------------------
     y:=5;
     WHILE (y>=2) LOOP
            idx_max:=1;
            i:=2;
      WHILE(i<=y) LOOP
           IF X(idx_max) < X(i) THEN
                 idx_max:=i;
            END IF;
        i:=i+1;
     END LOOP;
     temp:=x(idx_max);
     X(idx_max):=X(y);
     X(y):=temp;
     y:=y-1;
  END LOOP;
  ---------------------------------------------------------
  DBMS_OUTPUT.PUT_LINE(' ');
  DBMS_OUTPUT.PUT_LINE('Setelah di-urutkan : ');
  FOR i IN 1..5 LOOP
      DBMS_OUTPUT.PUT_LINE('X('||i||') = ' || TO_CHAR(X(i)));
  END LOOP;           
  --------------------------------------------------------- 
END;

0 komentar:

Posting Komentar