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.