これは、オブジェクトを再作成しているためです。オブジェクトのインスタンス化されたバージョンをパラメータとしてプロシージャに渡す必要があります:
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
を宣言しました OUT パラメータとして、これは変更できることを意味します。これを行いたくない場合は、「out」を削除して、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;
プレ>