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 DasarDi 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.
0 comments:
Post a Comment