Collections dan Records PL/SQL
5.9. Menggunakan Multilevel Collections
Sebagai tambahan untuk collections dari tipe-tipe scalar atau object, kita dapat pula menciptakan collections yang elemen-elemennya adalah collections. Sebagai contoh, kita dapat menciptakan nested table dari varray, varray dari varray, varray dari nested table, dan seterusnya.
Ketika menciptakan nested table dari nested table sebagai kolom di dalam SQL, periksa sintaks dari perintah CREATE TABLE untuk melihat bagaimana mendefinisikan peyimpanan table.
Berikut ini beberapa contoh yang menunjukkan sintaks dan kemungkinannya untuk multilevel collections.
Contoh Multilevel VARRAY
declare type t1 is varray(10) of integer; type nt1 is varray(10) of t1; -- varray multilevel type va t1 := t1(2,3,5); -- menginisialisasi varray multilevel nva nt1 := nt1(va, t1(55,6,73), t1(2,4), va); i integer; va1 t1; begin -- akses multilevel i := nva(2)(3); -- saya akan mendapatkan nilai 73 dbms_output.put_line(i); -- menambahkan elemen ke nva nva.extend; nva(5):= t1(56, 32); -- mengganti elemen varray dalam nva(4):= t1(45,43,67,43345); -- mengganti elemen integer dalam nva(4)(4):= 1; -- mengganti 43345 dengan 1 -- menambahkan elemen baru ke elemen ke-4 varray -- dan menyimpan integer 89 kepadanya. nva(4).extend; nva(4)(5):= 89; end; /
Contoh Multilevel Nested Table
declare
type tb1 is table of varchar2(20);
type ntb1 is table of tb1; -- table dari elemen-elemen table
type tv1 is varray(10) of integer;
type ntb2 is table of tv1; -- table dari elemen-elemen varray
vtb1 tb1 := tb1('one', 'three');
vntb1 ntb1 := ntb1(vtb1);
vntb2 ntb2 := ntb2(tv1(3,5), tv1(5,7,3)); -- table dari elemen-elemen varray
begin
vntb1.extend;
vntb1(2) := vntb1(1);
-- menghapus elemen pertama dalam vntb1
vntb1.delete(1);
-- menghapus string pertama dari table kedua dalam nested table
vntb1(2).delete(1);
end;
/
Contoh Multilevel Associative Varray
declare
type tb1 is table of integer index by binary_integer;
-- berikut ini adalah index-by table dari index-by tables
type ntb1 is table of tb1 index by binary_integer;
type va1 is varray(10) of varchar2(20);
-- berikut ini adalah index-by table dari varray elements
type ntb2 is table of va1 index by binary_integer;
v1 va1:= va1('hello', 'world');
v2 ntb1;
v3 ntb2;
v4 tb1;
v5 tb1; -- table kosong
begin
v4(1):= 34;
v4(2):= 46456;
v4(456):= 343;
v2(23):= v4;
v3(34):= va1(33, 456, 656, 343);
-- memberikan table kosong ke v2(35) dan coba lagi
v2(35):= v5;
v2(35)(2):= 78; -- dapat berfungsi sekarang
end;
/
Contoh Multilevel Collections dan Bulk SQL
create type t1 is varray(10) of integer; / create table tab1 (c1 t1); insert into tab1 values (t1(2,3,5)); insert into tab1 values (t1(9345, 5634, 432453)); declare type t2 is table of t1; v2 t2; begin select c1 BULK COLLECT INTO v2 from tab1; dbms_output.put_line(v2.count); -- menampilkan 2 end; /
| Buku ini membahas berbagai macam tip dan trik yang sangat berguna bagi Anda pembaca pengguna database Oracle. Pemula, mahasiswa, programmer, maupun database administrator yang mengharapkan solusi cepat dalam menangani permasalahan-permasalahan dalam penggunaan database Oracle dapat membaca buku ini. Anda tidak harus membaca buku ini secara urut karena buku ini di susun berdasarkan topik permasalahan, dan Anda dapat membaca topik-topik yang sesuai dengan permasalahan yang Anda hadapi. Dapat di beli di toko buku Gramedia, Gunung Agung, Uranus, Karisma dsb. Harga Rp. 24.800,- (157 halaman) |


[…] Silahkan melanjutkan membaca pembahasan Collections dan Records PL/SQL […]