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