Ini karena Anda membuat ulang objek. Anda harus meneruskan versi objek yang dipakai ke dalam prosedur sebagai parameter:
create or replace procedure add_n_rows(
Pn_rows in number
, P_tab in out t_tf_tab ) is
begin
for i in P_tab.count .. P_tab.count + Pn_rows
loop
P_tab.extend;
P_tab(l_tab.last) := t_tf_row(i, 'Description for '|| i);
end loop;
end;
Saya telah mendeklarasikan P_tab
sebagai parameter OUT, ini berarti Anda dapat mengubahnya. Jika Anda tidak ingin melakukan ini, hapus "keluar" dan deklarasikan variabel lokal dengan tipe t_tf_tab
, yang kemudian dapat Anda ubah.
Anda kemudian dapat memanggilnya secara terpisah, misalnya:
declare
l_tab t_tf_tab := t_tf_tab();
begin
l_tab.extend;
l_tab(l_tab.last) := t_tf_row(1. 'Hello');
add_n_rows(3, l_tab);
end;