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

Udfør for hver tabel i 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;
/

Hvis du vælger fra all_tables du kan ikke regne med at have fået de nødvendige bevillinger til at vælge fra tabelnavnet. Du bør derfor tjekke for ORA-00942: table or view does not exist fejl.

Med hensyn til årsagen til din fejl:Du får denne fejl, fordi select-sætningen returnerer et resultatsæt med mere end én række (én for hver tabel), og du kan ikke tildele et sådant resultatsæt til en varchar2.

Sørg i øvrigt for at aktivere dbms_output med SET SERVEROUT ON før du udfører denne blok.




  1. PHP læser ikke <select> navn til MySQL Update

  2. Sammensæt grupper i SQL Server

  3. Introduktion til PL/SQL-indsamlingsmetoder i Oracle-databasen

  4. Sådan dokumenterer du din SQL Server-database