Anzahl Zeilen aller Tabellen

Manchmal möchte man die Anzahl der Datensätze nicht nur in einer Tabelle, sondern in allen Tabellen eines Schemas wissen. Jetzt kann man dies über eine PL/SQL-Prozedur lösen oder mit Hilfe von XML etwas eleganter über ein SELECT-Statement.

DEFINE _SCHEMA_OWNER = &1 INSERT_SCHEMA_OWNER_HERE
SELECT 
  owner,
  table_name, 
  TO_NUMBER(EXTRACTVALUE(xmltype(dbms_xmlgen.getxml(
    'SELECT COUNT(*) Count FROM ' || owner || '.' || table_name)), '/ROWSET/ROW/COUNT'
  )) AS row_count
FROM 
  all_tables 
WHERE 
  owner = '&_SCHEMA_OWNER' 
ORDER BY 
  table_name;

Während der Ausführung im SQL*Plus wird nach dem entsprechenden Schema gefragt.