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;
/

 

Pages: 1 2 3 4 5 6 7 8 9 10 11 12

 

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)

 

Related Articles

 

Comments

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

[…] Data PL/SQL - 3,145 viewsPL/SQL Subprograms - 2,742 viewsMengontrol Akses User - 2,717 viewsCollections dan Records PL/SQL - 2,654 viewsMenampilkan Data - 2,572 viewsPendahuluan - 2,555 […]

Leave a comment

(required)

(required)


*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word