Oracle
 sql >> база данни >  >> RDS >> Oracle

Процедура за актуализиране на таблица, която вече е попълнена

Това е така, защото пресъздавате обекта. Трябва да предадете инстанцирана версия на обекта в процедурата като параметър:

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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не разбирам Collation? (Mysql, RDBMS, набори от символи)

  2. Ora SQL Query:присъединяване без препратки

  3. JDBC ResultSet:Имам нужда от getDateTime, но има само getDate и getTimeStamp

  4. как да извлека непрекъснат брой на срещания на стойност на колона в sql?

  5. Грешка в израза на Oracle MERGE (ORA-30926)