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

Wykonaj dla każdej tabeli w 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;
/

Jeśli wybierasz z all_tables nie można liczyć na dotacje niezbędne do wybrania z nazwy tabeli. Dlatego powinieneś sprawdzić, czy ORA-00942: table or view does not exist zgłoszony błąd.

Co do przyczyny błędu:pojawia się ten błąd, ponieważ instrukcja select zwraca zestaw wyników z więcej niż jednym wierszem (po jednym dla każdej tabeli) i nie możesz przypisać takiego zestawu wyników do varchar2.

Przy okazji, upewnij się, że włączyłeś dbms_output za pomocą SET SERVEROUT ON przed wykonaniem tego bloku.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ustaw różne zmienne środowiskowe ORACLE_HOME i PATH za pomocą Ansible

  2. Problem z parametrami w Oracle RefCursor

  3. Zapytania sparametryzowane w C# dla Oracle — poważny i niebezpieczny błąd!

  4. Pobieranie wpisów połączonej listy w relacyjnej bazie danych

  5. Jak zbiorczo wstawić dane z kursora ref do tabeli tymczasowej w PL/SQL?