Koleksi adalah kumpulan data terurut dengan tipe data yang sama. Umumnya, item data tersebut merupakan bidang skalar, tetapi juga dapat berupa tipe yang ditentukan pengguna seperti tipe rekaman atau objek, selama struktur dan tipe data setiap elemen dalam tipe tersebut sama. Setiap item data dalam koleksi dirujuk menggunakan notasi subskrip di dalam sepasang tanda kurung.
Koleksi multi-level (yaitu, ketika item data dari suatu koleksi adalah koleksi lain) tidak didukung.
Jenis koleksi yang paling umum adalah larik. Di PolarDB for PostgreSQL (Compatible with Oracle), jenis koleksi yang didukung meliputi larik asosiatif (sebelumnya disebut tabel berindeks di Oracle), tabel bersarang, dan varray.
Langkah-langkah umum untuk menggunakan koleksi adalah sebagai berikut:
Koleksi dengan tipe yang diinginkan harus didefinisikan. Ini dapat dilakukan di bagian deklarasi program SPL, menghasilkan tipe lokal yang hanya dapat diakses di dalam program tersebut. Untuk tipe tabel bersarang dan varray, ini juga dapat dilakukan menggunakan pernyataan CREATETYPE, yang membuat tipe mandiri persisten yang dapat dirujuk oleh program SPL apa pun di database.
Variabel dengan tipe koleksi dideklarasikan. Koleksi yang terkait dengan variabel yang dideklarasikan dianggap belum diinisialisasi jika tidak ada nilai yang ditetapkan sebagai bagian dari deklarasi variabel.
Koleksi yang belum diinisialisasi dari tabel bersarang dan varray bernilai null. Koleksi null belum ada. Secara umum, pengecualian COLLECTION_IS_NULL akan dilemparkan jika metode koleksi dipanggil pada koleksi null.
Koleksi yang belum diinisialisasi dari larik asosiatif ada tetapi tidak memiliki elemen. Koleksi yang ada tanpa elemen disebut koleksi kosong.
Untuk menginisialisasi koleksi null, Anda harus menjadikannya koleksi kosong atau menetapkan nilai non-null padanya. Secara umum, koleksi null diinisialisasi menggunakan konstruktor.
Untuk menambahkan elemen ke larik asosiatif kosong, Anda cukup menetapkan nilai ke kunci-kuncinya. Untuk tabel bersarang dan varray, umumnya konstruktor digunakan untuk menetapkan nilai awal ke tabel bersarang atau varray. Metode EXTEND kemudian digunakan untuk memperluas koleksi melebihi ukuran awalnya yang ditetapkan oleh konstruktor.
Proses spesifik untuk setiap jenis koleksi dijelaskan dalam topik-topik berikut.