MODUL PERKULIAHAN
F062100006 -
Pemrograman
PL/SQL
Melaksanakan perintah SQL
Menggunakan PL/SQL
Abstrak Sub-CPMK
13
Sabar Rudiarto, S.Kom, M.Kom.
FASILKOM Teknik Informatika
COLLECTION
Apa yang dimaksud dengan Collection
Collection adalah kelompok elemen tersusun yang memiliki tipe data yang sama. Mirip
dengan List dan Array.
Type Collection
Ada 3 tipe collection:
1. Associative array (index-by-table)
2. Varray (variable-size array)
3. Nested table
1. Associative array
• Associative array merupakan suatu himpunan dari pasangan key-value
• Setiap key secara unik dapat mengidentifikasi sebuah nilai pada array
Syntax:
• Kosong (tapi tidak null), sampai diisi • Tidak membutuhkan disk space
nilainya. atau network operation
BEGIN
-- Add elements (key-value pairs) to associative array:
city_population('Smallville') := 2000;
city_population('Midland') := 750000;
city_population('Megalopolis') := 1000000;
-- Change value associated with key 'Smallville':
city_population('Smallville') := 2001;
2. Varray
• Varray merupakan array dengan jumlah elemen yang bervariasi (tergantung
deklarasi maximum size)
• Untuk mengakses sebuah elemen pada variabel varray dapat menggunakan
sintaks variable_name(index)
• Lower bound index = 1
• Upper bound index = current number of elements
Upper bound dapat berubah ketika ada elemen yang dihapus atau ditambah, tapi
tidak dapat melebihi maximum size.
Syntax:
DBMS_OUTPUT.PUT_LINE('---');
END;
BEGIN
print_team('2001 Team:');
2009 Team:
1.Arun
2.Amitha
3.Allan
4.Mae
---
3. Nested Table
• Nested table merupakan jenis kolom yang menyimpan sejumlah baris tanpa
urutan.
• Ketika nilai dari nested table diambil dari database ke variabel PL/SQL nested
table, maka indeks akan diberikan oleh PL/SQL yang dimulai dari 1.
• Setiap baris pada variabel nested table dapat diakses menggunakan indeks.
Jumlah memori yang digunakan oleh variabel nested table dapat bertambah atau
berkurang secara dinamis, pada saat elemen dihapus atau ditambah.
Syntax:
TYPE type_name IS TABLE OF [DATATYPE];
Contoh:
DECLARE
BEGIN
DBMS_OUTPUT.PUT_LINE(heading);
DBMS_OUTPUT.PUT_LINE(names(i));
END LOOP;
DBMS_OUTPUT.PUT_LINE('---');
END;
BEGIN
print_names('Initial Values:');
print_names('Current Values:');
print_names('Current Values:');
END;
Hasilnya:
Initial Values:
D Caruso
J Hamil
D Piro
R Singh
---
Current Values:
D Caruso
P Perez
R Singh
---
Current Values:
A Jansen
B Gupta