Index By Table
Sintak Dasar
Di bawah ini yakni 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 yakni pola jadwal 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 yakni pola jadwal 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 DasarDi bawah ini yakni 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 yakni pola jadwal 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 yakni pola jadwal 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.