sql >> Database teknologi >  >> RDS >> Oracle

Procedure for at opdatere en tabel, som allerede er udfyldt

Dette er fordi du genskaber objektet. Du skal overføre en instansieret version af objektet til 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;

Jeg har erklæret P_tab som en OUT-parameter betyder det, at du kan ændre den. Hvis du ikke ønsker at gøre dette, skal du fjerne "out" og erklære en lokal variabel af typen t_tf_tab , som du så kan ændre.

Du kan derefter kalde det separat, for eksempel:

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. Hvordan current_timestamp() virker i PostgreSQL

  2. Sådan opbevarer du redigeringshistorikken for stort strengfelt i relationsdatabasen

  3. Tæl alle poster, der ikke eksisterer, til anden tabel - SQL Query

  4. Sådan fungerer OCTET_LENGTH()-funktionen i MySQL