sql >> Databasteknik >  >> RDS >> Oracle

Kör för varje tabell 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;
/

Om du väljer från all_tables du kan inte räkna med att ha fått de bidrag som krävs för att välja från tabellnamnet. Du bör därför leta efter ORA-00942: table or view does not exist fel.

Angående orsaken till ditt fel:Du får det här felet eftersom select-satsen returnerar en resultatuppsättning med mer än en rad (en för varje tabell) och du kan inte tilldela en sådan resultatuppsättning till en varchar2.

Se förresten till att du aktiverar dbms_output med SET SERVEROUT ON innan du kör detta block.




  1. Hur anropar man en Oracle-funktion med en Ref Cursor som Out-parameter från C#?

  2. Letar efter handledning om hur man bygger ett privat meddelandesystem med PHP

  3. Med MySql, kan jag sortera en kolumn men har 0 kommit sist?

  4. SQL:Upprepa en resultatrad flera gånger och numrera raderna