Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Procedura aktualizacji tabeli, która jest już zapełniona

Dzieje się tak, ponieważ odtwarzasz obiekt. Musisz przekazać skonkretyzowaną wersję obiektu do procedury jako parametr:

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;

Zadeklarowałem P_tab jako parametr OUT, oznacza to, że możesz go zmienić. Jeśli nie chcesz tego robić, usuń „out” i zadeklaruj zmienną lokalną typu t_tf_tab , który możesz następnie zmienić.

Możesz wtedy zadzwonić osobno, na przykład:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak spakować plik .csv i dołączyć do wiadomości e-mail Oracle plsql bez użycia Javy?

  2. Oracle RAC w chmurach innych firm

  3. Zapytanie Oracle jest powolne (lub kończy się niepowodzeniem) z aplikacji .NET, ale szybkie z SQL Developer

  4. Aktualizacja sterowania siecią po ręcznej aktualizacji bazy danych

  5. Jak połączyć wiele wierszy w jeden w Oracle bez tworzenia procedury składowanej?