Here’s a handy script that I put together today. It finds all of the tables with the EMPLID field in it and prints a count of the rows that have a non-blank EMPLID value.
You can tweak it to work with other fields or find a certain value.
declare
cursor tbls is select distinct a.recname
from psrecfieldall a, psrecdefn b
where a.recname = b.recname
and b.rectype = 0
and a.fieldname = 'EMPLID';
tbl tbls%ROWTYPE;
cnt number;
tablename varchar2(50);
sqltext varchar2(200);
begin
open tbls;
loop
fetch tbls into tbl;
exit when tbls%NOTFOUND;
select sqltablename into tablename from psrecdefn where recname = tbl.recname;
if tablename = ' ' then
tablename := 'PS_' || tbl.recname;
end if;
sqltext := 'select count(*) from ' || tablename || ' where EMPLID <> '' '' ';
execute immediate sqltext into cnt;
if cnt > 0 then
dbms_output.put_line(tbl.recname || ' = ' || cnt);
end if;
end loop;
close tbls;
exception
when others then
dbms_output.put_line('error with table: ' || tbl.recname);
dbms_output.put_line(' ' || SQLCODE || ': ' || SQLERRM);
dbms_output.put_line(' sql: ' || sqltext);
end;
/
Any suggestions are welcome.