sql >> Databasteknik >  >> RDS >> Oracle

Procedur för att uppdatera en tabell som redan är ifylld

Detta beror på att du återskapar objektet. Du måste skicka en instansierad version av objektet till proceduren som en 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;

Jag har deklarerat P_tab som en OUT-parameter betyder detta att du kan ändra den. Om du inte vill göra detta, ta bort "out" och deklarera en lokal variabel av typen t_tf_tab , som du sedan kan ändra.

Du kan sedan kalla det separat, till exempel:

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;



  1. Lagra HTML i SQL Server

  2. Behöver hjälp med att skapa en dynamisk meny

  3. Django inspectdb-problem med Oracle-databas

  4. Ställer in Django för att använda MySQL