最笨的当然是穷举法了:declare v_Sql varchar2(2000); v_count number; begin for xx in (select t.OWNER, t.TABLE_NAME, t.COLUMN_NAME from dba_tab_columns t where t.OWNER = 'SCOTT') loop begin v_Sql := 'select count(1) from ' || xx.owner || '.' || xx.table_name || ' where ' || xx.column_name || ' like ''%Adan%'' '; execute immediate v_Sql into v_count; if (v_count >= 1) then dbms_output.put_line(xx.table_name || ':' || xx.column_name); end if; exception when others then null; end; end loop; end;
v_Sql varchar2(2000);
v_count number;
begin
for xx in (select t.OWNER, t.TABLE_NAME, t.COLUMN_NAME
from dba_tab_columns t
where t.OWNER = 'SCOTT') loop
begin
v_Sql := 'select count(1) from ' || xx.owner || '.' || xx.table_name ||
' where ' || xx.column_name || ' like ''%Adan%'' ';
execute immediate v_Sql
into v_count;
if (v_count >= 1) then
dbms_output.put_line(xx.table_name || ':' || xx.column_name);
end if;
exception
when others then
null;
end;
end loop;
end;