Data Collection Pada PL/SQL

Index By Table


Sintak Dasar

Di bawah ini adalah sintak dasar Index By Table :

TYPE type_name IS TABLE OF element_type [NOT NULL] INDEX BY subscript_type;
table_name type_name;

Contoh Program #1

Di bawah ini adalah contoh program penggunaan Index By Table pada PL/SQL:

DECLARE
   TYPE jurusan IS TABLE OF VARCHAR2(50)
      INDEX BY VARCHAR2 (50);

   daftar_mahasiswa   jurusan;
   nama          VARCHAR2 (50);
BEGIN
   -- adding elements to the table
   daftar_mahasiswa ('Nursalim') := 'Teknik Informatika';
   daftar_mahasiswa ('Nani Indriyani') := 'Bahasa Inggris';
   daftar_mahasiswa ('Ahmad Fatoni') := 'Ekonomi';
   daftar_mahasiswa ('Naura Krasiva') := 'Public Relations';
   
   -- printing the table
   nama := daftar_mahasiswa.FIRST;

   WHILE nama IS NOT NULL
   LOOP
      DBMS_OUTPUT.put_line (
         'Nama ' || nama || ' Mengambil Jurusan ' || daftar_mahasiswa(nama));
      nama := daftar_mahasiswa.NEXT (nama);
   END LOOP;
END;

Output

Nama Ahmad Fatoni Mengambil Jurusan Ekonomi
Nama Nani Indriyani Mengambil Jurusan Bahasa Inggris
Nama Naura Krasiva Mengambil Jurusan Public Relations
Nama Nursalim Mengambil Jurusan Teknik Informatika

Contoh Program #2

Di bawah ini adalah contoh program penggunaan Index By Table pada PL/SQL:

DECLARE
   CURSOR c_mahasiswa
   IS
      SELECT nama FROM mahasiswa;

   TYPE c_list IS TABLE OF mahasiswa.nama%TYPE
      INDEX BY BINARY_INTEGER;

   daftar_nama   c_list;
   counter     INTEGER := 0;
BEGIN
   FOR n IN c_mahasiswa
   LOOP
      counter := counter + 1;
      daftar_nama (counter) := n.nama;
      DBMS_OUTPUT.put_line (
         'Mahasiswa(' || counter || ') : ' || daftar_nama (counter));
   END LOOP;
END;
/

Output

Mahasiswa(1) : Nursalim Alfarizi
Mahasiswa(2) : Nani Indriyani
Mahasiswa(3) : Desi Lisnawati

Nested Table

Sintak Dasar

Di bawah ini adalah sintak dasar Nested Table pada PL/SQL :

TYPE type_name IS TABLE OF element_type [NOT NULL];
table_name type_name;

Contoh Program #1

Di bawah ini adalah contoh program penggunaan Nested Table pada PL/SQL:

DECLARE
   TYPE table_npm IS TABLE OF VARCHAR2 (10);
   TYPE table_nama IS TABLE OF VARCHAR2 (50);
   TYPE table_jurusan IS TABLE OF VARCHAR2 (50);

   daftar_npm   table_npm;
   daftar_nama   table_nama;
   daftar_jurusan   table_jurusan;
   total   INTEGER;
BEGIN
   daftar_npm := table_npm ('1001','1002','1003');
   daftar_nama := table_nama ('Nursalim', 'Nani Indriyani', 'Desi Lisnawati');
   daftar_jurusan := table_jurusan ('Teknik Informatika', 'Bahasa Inggris', 'Biologi');
   
   total := daftar_npm.COUNT;
   DBMS_OUTPUT.put_line ('Total ' || total || ' Mahasiswa');

   FOR i IN 1 .. total
   LOOP
      DBMS_OUTPUT.put_line (
         'Mahasiswa ('||(i)||')'||' --> NPM : '|| daftar_npm (i) || ', Nama : ' || daftar_nama (i) ||', Jurusan : '||daftar_jurusan(i));
   END LOOP;
END;

Output

Total 3 Mahasiswa
Mahasiswa (1) --> NPM : 1001, Nama : Nursalim, Jurusan : Teknik Informatika
Mahasiswa (2) --> NPM : 1002, Nama : Nani Indriyani, Jurusan : Bahasa Inggris
Mahasiswa (3) --> NPM : 1003, Nama : Desi Lisnawati, Jurusan : Biologi

PL/SQL procedure successfully completed.

Contoh Program#2

Di bawah ini adalah contoh program penggunaan Nested Table pada PL/SQL:

DECLARE
   CURSOR c_mahasiswa
   IS
      SELECT nama FROM mahasiswa;

   TYPE c_list IS TABLE OF mahasiswa.nama%TYPE;

   list_nama   c_list := c_list ();
   counter     INTEGER := 0;
BEGIN
   FOR n IN c_mahasiswa
   LOOP
      counter := counter + 1;
      list_nama.EXTEND;
      list_nama (counter) := n.nama;
      DBMS_OUTPUT.put_line (
         'Mahasiswa(' || counter || '):' || list_nama (counter));
   END LOOP;
END;
/

Output:

Mahasiswa(1):Nursalim Alfarizi
Mahasiswa(2):Nani Indriyani
Mahasiswa(3):Desi Lisnawati

PL/SQL procedure successfully completed.
Share on Google Plus

About Unknown

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment