sql >> Database >  >> RDS >> Oracle

Procedure om een ​​tabel bij te werken die al is gevuld

Dit komt omdat u het object opnieuw maakt. U moet een geïnstantieerde versie van het object als parameter aan de procedure doorgeven:

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;

Ik heb P_tab . gedeclareerd als een OUT-parameter, betekent dit dat u deze kunt wijzigen. Als je dit niet wilt doen, verwijder dan "out" en declareer een lokale variabele van het type t_tf_tab , die u vervolgens kunt wijzigen.

Je kunt het dan apart aanroepen, bijvoorbeeld:

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. meest actieve tijd van de dag op basis van begin- en eindtijd

  2. Hoe pascal zaak te forceren met Oracle's Entity Framework-ondersteuning?

  3. het combineren van mysql-query SUM() resultaat met behulp van inner join

  4. COUNT(id) versus COUNT(*) in MySQL