Điều này là do bạn đang tạo lại đối tượng. Bạn cần chuyển phiên bản khởi tạo của đối tượng vào thủ tục dưới dạng tham số:
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;
Tôi đã khai báo P_tab
như một tham số OUT, điều này có nghĩa là bạn có thể thay đổi nó. Nếu bạn không muốn làm điều này, hãy xóa "out" và khai báo một biến cục bộ thuộc loại t_tf_tab
, sau đó bạn có thể thay đổi.
Sau đó, bạn có thể gọi nó một cách riêng biệt, ví dụ:
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;