ऐसा इसलिए है क्योंकि आप ऑब्जेक्ट को फिर से बना रहे हैं। आपको प्रक्रिया में एक पैरामीटर के रूप में ऑब्जेक्ट के एक त्वरित संस्करण को पास करने की आवश्यकता है:
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;
मैंने P_tab
घोषित कर दिया है एक आउट पैरामीटर के रूप में, इसका मतलब है कि आप इसे बदल सकते हैं। यदि आप ऐसा नहीं करना चाहते हैं तो "बाहर" को हटा दें और t_tf_tab
प्रकार का स्थानीय चर घोषित करें , जिसे आप तब बदल सकते हैं।
फिर आप इसे अलग से कॉल कर सकते हैं, उदाहरण के लिए:
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;