sql >> Databáze >  >> RDS >> Oracle

Spustit pro každou tabulku v 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;
/

Pokud vybíráte z all_tables nemůžete počítat s tím, že vám budou uděleny granty potřebné k výběru z názvu tabulky. Měli byste proto zkontrolovat, zda ORA-00942: table or view does not exist došlo k chybě.

Pokud jde o příčinu vaší chyby:Tato chyba se zobrazí, protože příkaz select vrací sadu výsledků s více než jedním řádkem (jeden pro každou tabulku) a nemůžete takovou sadu výsledků přiřadit k varchar2.

Mimochodem, ujistěte se, že jste povolili dbms_output pomocí SET SERVEROUT ON před provedením tohoto bloku.




  1. Jak najít záznamy s NULL ve sloupci

  2. Jak přenést data databáze MySQL do webové aplikace MVC .NET

  3. Jak získat jednotlivé sloupce z tabulky vrácené z funkce?

  4. Generování výpisu Postgres a ukládání na jiný server