Indexing Tables of Records
Kadang kala, kita tidak hanya perlu menyimpan satu baris data, melainkan beberapa baris data. Untuk kasus seperti ini, kita tidak bisa lagi menggunakan record, melainkan collection.
Collection
- Collection adalah nama dari sekelompok data berjenis sama yang disimpan sebagai variabel. Sama seperti record, collection adalah tipe data composite. Contoh dari collection:
INDEX BY tables, INDEX BY tables of records, Nested Tables, dan Varrays. - INDEX BY table memiliki primary key agar kita bisa mereferensikan setiap baris tabel tersebut. Primary key ini biasanya bertipe data BINARY_INTEGER, tapi bisa juga VARCHAR2. Primary key bisa juga berupa primary key dari tabel sumber.
- Syntax:
DECLARE
TYPE type_name IS TABLE OF DATA_TYPE — DATA_TYPE bisa berupa skalar maupun composite.
INDEX_BY PRIMARY_KEY_DATA_TYPE;
identifier type_name;
BEGIN
FOR record IN (SELECT column FROM table) LOOP
identifier(primary_key) := record.column;
END LOOP;
END; - Kita bisa menggunakan procedure dan functions yang telah disediakan pada INDEX BY table, seperti EXISTS, COUNT, FIRST, LAST, PRIOR, NEXT, DELETE, TRIM.
- Apabila kita menyimpan kumpulan record menggunakan INDEX BY table, kita bisa mereferensi setiap field di record dengan menggunakan syntax: table(index).field