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

Изпълнение за всяка таблица в PLSQL

declare 
  cnt number;
begin
  for r in (select owner, table_name from all_tables
             where upper(table_name) like ('%MSRS%')) loop

    execute immediate 'select count(*) from "'
            || r.owner || '"."'
            || r.table_name || '"'
            into cnt;

    dbms_output.put_line(r.owner || '.' || r.table_name || ': ' || cnt);
  end loop;
end;
/

Ако избирате от all_tables не можете да разчитате, че сте получили грантовете, необходими за избор от името на таблицата. Следователно трябва да проверите за ORA-00942: table or view does not exist възникна грешка.

Що се отнася до причината за вашата грешка:Получавате тази грешка, защото командата select връща набор от резултати с повече от един ред (по един за всяка таблица) и не можете да присвоите такъв набор от резултати на varchar2.

Между другото, уверете се, че сте активирали dbms_output с SET SERVEROUT ON преди да изпълните този блок.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. има ли някаква функция за превод на данни в sql

  2. Как да направите пресичане на композиционна таблица

  3. `show create table` еквивалент в oracle sql

  4. Как да извлечете данни от курсора в Oracle, използвайки For Loop

  5. Използване на функцията Oracle to_date за низ от дата с милисекунди